{"version":3,"file":"softpro-ui-kit.umd.min.js","mappings":"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,GAAO,KACPC,GAAM,IACNC,GAAO,IACPC,GAAe,CAClBC,OAAQ7gE,GACR8gE,OAAQ7gE,GACRC,OAAQA,GACRC,OAAQA,GACRC,GAAIA,GACJC,IAAKA,GACLC,IAAKA,GACLygE,MAAOxgE,GACPygE,MAAOxgE,GACPygE,MAAOxgE,GACPC,IAAKA,GACLC,IAAKA,GACLugE,MAAOtgE,GACPugE,MAAOtgE,GACPC,GAAIA,GACJC,IAAKA,GACLC,IAAKA,GACLogE,OAAQngE,GACRogE,OAAQngE,GACRC,QAASA,GACTC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACPC,MAAOA,GACP6/D,IAAK5/D,GACL6/D,IAAK5/D,GACLC,OAAQA,GACRC,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACNC,SAAUA,GACVC,KAAMA,GACNC,IAAKA,GACLC,KAAMA,GACNluM,MAAOA,GACPmuM,SAAUA,GACVC,SAAUA,GACVC,SAAUA,GACVC,SAAUA,GACVC,SAAUA,GACVC,SAAUA,GACVC,SAAUA,GACVC,SAAUA,GACVC,OAAQA,GACRC,MAAOA,GACPC,QAASA,GACTC,SAAUA,GACVC,OAAQA,GACRC,MAAOA,GACPC,QAASA,GACTC,MAAOA,GACPC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRn0E,GAAIA,GACJo0E,IAAKA,GACLC,IAAKA,GACLC,KAAMA,GACN89D,KAAM79D,GACNC,cAAeA,GACfC,OAAQA,GACRC,SAAUA,GACV29D,MAAO19D,GACP29D,MAAO19D,GACPC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,IAAKA,GACLC,MAAOA,GACPC,QAASA,GACTq9D,OAAQp9D,GACRq9D,OAAQp9D,GACRq9D,KAAMp9D,GACNq9D,KAAMp9D,GACNC,SAAUA,GACVC,MAAOA,GACPC,SAAUA,GACVC,YAAaA,GACbC,UAAWA,GACXC,QAASA,GACTC,UAAWA,GACXC,UAAWA,GACXC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,SAAUA,GA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ACNC,MAAOA,GACPC,OAAQA,GACRC,SAAUA,GACVC,WAAYA,GACZC,MAAOA,GACPC,OAAQA,GACRC,SAAUA,GACVC,WAAYA,GACZnlP,OAAQA,GACRolP,OAAQA,GACRC,mBAAoBA,GACpBC,aAAcA,GACdC,kBAAmBA,GACnBC,eAAgBA,GAChBC,oBAAqBA,GACrBC,YAAaA,GACbC,OAAQA,GACRC,IAAKA,GACLC,KAAMA,GACNC,MAAOA,GACPC,KAAMA,GACNC,KAAMA,GACNC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,MAAOA,GACPC,gBAAiBA,GACjBC,YAAaA,GACbC,MAAOA,GACPn3P,IAAKA,GACLo3P,IAAKA,GACLC,OAAQA,GACRC,KAAMA,GACNC,KAAMA,GACNC,QAASA,GACTC,QAASA,GACTC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,QAASA,GACTC,OAAQA,GACRC,OAAQA,GACRC,SAAUA,GACVC,UAAWA,GACXC,YAAaA,GACbC,UAAWA,GACXC,WAAYA,GACZC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,WAAYA,GACZC,KAAMA,GACNC,YAAaA,GACbC,SAAUA,GACVC,cAAeA,GACfC,mBAAoBA,GACpBC,cAAeA,GACfC,OAAQA,GACRC,YAAaA,GACbC,SAAUA,GACVC,SAAUA,GACVC,QAASA,GACTC,SAAUA,GACVp2O,IAAKA,GACLq2O,IAAKA,GACLC,KAAMA,GACNma,KAAMla,GACNma,KAAMla,GACNma,KAAMla,GACNC,IAAKA,GACLC,IAAKA,GACLC,OAAQA,GACRC,QAASA,GACTC,KAAMA,GACNC,KAAMA,GACNC,QAASA,GACTC,SAAUA,GACVC,cAAeA,GACfC,QAASA,GACTC,QAASA,GACTC,QAASA,GACTC,QAASA,GACTC,MAAOA,GACPC,MAAOA,GACPC,QAASA,GACTC,OAAQA,GACRC,OAAQA,GACRC,SAAUA,GACVC,UAAWA,GACXC,UAAWA,GACXC,WAAYA,GACZC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GACRC,OAAQA,GA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","sources":["webpack://VueSoftProUI/webpack/universalModuleDefinition","webpack://VueSoftProUI/./node_modules/@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.js","webpack://VueSoftProUI/./src/components/basic/vs-button.vue?1fc5","webpack://VueSoftProUI/src/components/basic/vs-button.vue","webpack://VueSoftProUI/./src/components/basic/vs-button.vue?96b9","webpack://VueSoftProUI/./src/components/basic/vs-button.vue","webpack://VueSoftProUI/./src/components/basic/vs-toast.vue?55da","webpack://VueSoftProUI/src/components/basic/vs-toast.vue","webpack://VueSoftProUI/./src/components/basic/vs-toast.vue?1798","webpack://VueSoftProUI/./src/components/basic/vs-toast.vue","webpack://VueSoftProUI/./src/components/form/vs-form-checkbox.vue?b37d","webpack://VueSoftProUI/src/components/form/vs-form-checkbox.vue","webpack://VueSoftProUI/./src/components/form/vs-form-checkbox.vue?f6ab","webpack://VueSoftProUI/./src/components/form/vs-form-checkbox.vue","webpack://VueSoftProUI/./src/components/form/vs-form-number.vue?6dfb","webpack://VueSoftProUI/./node_modules/decimal.js/decimal.mjs","webpack://VueSoftProUI/src/components/form/vs-form-number.vue","webpack://VueSoftProUI/./src/components/form/vs-form-number.vue?616c","webpack://VueSoftProUI/./src/components/form/vs-form-number.vue","webpack://VueSoftProUI/./src/components/form/vs-form-radio.vue?d7e5","webpack://VueSoftProUI/src/components/form/vs-form-radio.vue","webpack://VueSoftProUI/./src/components/form/vs-form-radio.vue?30a2","webpack://VueSoftProUI/./src/components/form/vs-form-radio.vue","webpack://VueSoftProUI/./src/components/form/vs-form-select.vue?aa70","webpack://VueSoftProUI/src/components/form/vs-form-select.vue","webpack://VueSoftProUI/./src/components/form/vs-form-select.vue?7502","webpack://VueSoftProUI/./src/components/form/vs-form-select.vue","webpack://VueSoftProUI/./src/components/form/vs-form-text.vue?cf91","webpack://VueSoftProUI/./node_modules/imask/esm/core/utils.js","webpack://VueSoftProUI/./node_modules/imask/esm/core/action-details.js","webpack://VueSoftProUI/./node_modules/imask/esm/core/holder.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/factory.js","webpack://VueSoftProUI/./node_modules/imask/esm/controls/mask-element.js","webpack://VueSoftProUI/./node_modules/imask/esm/controls/html-mask-element.js","webpack://VueSoftProUI/./node_modules/imask/esm/controls/html-input-mask-element.js","webpack://VueSoftProUI/./node_modules/imask/esm/controls/html-contenteditable-mask-element.js","webpack://VueSoftProUI/./node_modules/imask/esm/controls/input-history.js","webpack://VueSoftProUI/./node_modules/imask/esm/controls/input.js","webpack://VueSoftProUI/./node_modules/imask/esm/core/change-details.js","webpack://VueSoftProUI/./node_modules/imask/esm/core/continuous-tail-details.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/base.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/pattern/chunk-tail-details.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/pattern/cursor.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/pattern/fixed-definition.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/pattern/input-definition.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/regexp.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/pattern.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/range.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/date.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/dynamic.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/enum.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/function.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/number.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/pipe.js","webpack://VueSoftProUI/./node_modules/imask/esm/masked/repeat.js","webpack://VueSoftProUI/./node_modules/imask/esm/index.js","webpack://VueSoftProUI/src/components/form/vs-form-text.vue","webpack://VueSoftProUI/./src/components/form/vs-form-text.vue?fbe6","webpack://VueSoftProUI/./src/components/form/vs-form-text.vue","webpack://VueSoftProUI/./src/components/form/vs-form.vue?c1bc","webpack://VueSoftProUI/src/components/form/vs-form.vue","webpack://VueSoftProUI/./src/components/form/vs-form.vue?2f39","webpack://VueSoftProUI/./src/components/form/vs-form.vue","webpack://VueSoftProUI/./src/components/overlays/dialog/vs-dialog.vue?27ec","webpack://VueSoftProUI/src/components/overlays/dialog/vs-dialog.vue","webpack://VueSoftProUI/./src/components/overlays/dialog/vs-dialog.vue?a6e5","webpack://VueSoftProUI/./src/components/overlays/dialog/vs-dialog.vue","webpack://VueSoftProUI/./src/components/tooltips/vs-popover.vue?7b2d","webpack://VueSoftProUI/src/components/tooltips/vs-popover.vue","webpack://VueSoftProUI/./src/components/tooltips/vs-popover.vue?fbe1","webpack://VueSoftProUI/./src/components/tooltips/vs-popover.vue","webpack://VueSoftProUI/./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://VueSoftProUI/./node_modules/affine-hull/aff.js","webpack://VueSoftProUI/./node_modules/bit-twiddle/twiddle.js","webpack://VueSoftProUI/./node_modules/convex-hull/ch.js","webpack://VueSoftProUI/./node_modules/convex-hull/lib/ch1d.js","webpack://VueSoftProUI/./node_modules/convex-hull/lib/ch2d.js","webpack://VueSoftProUI/./node_modules/convex-hull/lib/chnd.js","webpack://VueSoftProUI/./src/components/basic/vs-button.vue?48f5","webpack://VueSoftProUI/./src/components/basic/vs-drop.vue?035e","webpack://VueSoftProUI/./src/components/basic/vs-toast.vue?7a98","webpack://VueSoftProUI/./src/components/form/geom/components/vs-map-search.vue?9e66","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-layers.vue?3ae1","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-legend.vue?d9cf","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom.vue?3fc3","webpack://VueSoftProUI/./src/components/form/layout/vs-form-wrapper.vue?e257","webpack://VueSoftProUI/./src/components/form/misc/vs-form-option.vue?f53b","webpack://VueSoftProUI/./src/components/form/vs-form-ace.vue?45ad","webpack://VueSoftProUI/./src/components/form/vs-form-checkbox.vue?b8a3","webpack://VueSoftProUI/./src/components/form/vs-form-file.vue?bcdd","webpack://VueSoftProUI/./src/components/form/vs-form-number.vue?7a96","webpack://VueSoftProUI/./src/components/form/vs-form-select.vue?f51a","webpack://VueSoftProUI/./src/components/form/vs-form-switch.vue?f7ef","webpack://VueSoftProUI/./src/components/form/vs-form-text.vue?ec65","webpack://VueSoftProUI/./src/components/form/vs-form-textarea.vue?7043","webpack://VueSoftProUI/./src/components/form/vs-form-upload.vue?7cde","webpack://VueSoftProUI/./src/components/navigations/vs-dropdown.vue?e897","webpack://VueSoftProUI/./src/components/navigations/vs-tabs.vue?2d0e","webpack://VueSoftProUI/./src/components/overlays/dialog/vs-dialog.vue?da0b","webpack://VueSoftProUI/./src/components/tooltips/vs-popover.vue?cf9f","webpack://VueSoftProUI/./src/components/form/vs-form-datepicker.vue?d41b","webpack://VueSoftProUI/./src/components/form/vs-form-radio.vue?89e1","webpack://VueSoftProUI/./node_modules/@toast-ui/editor/dist/toastui-editor.css","webpack://VueSoftProUI/./node_modules/css-loader/dist/runtime/api.js","webpack://VueSoftProUI/./node_modules/css-loader/dist/runtime/getUrl.js","webpack://VueSoftProUI/./node_modules/css-loader/dist/runtime/noSourceMaps.js","webpack://VueSoftProUI/./node_modules/earcut/src/earcut.js","webpack://VueSoftProUI/./node_modules/geojson-area/index.js","webpack://VueSoftProUI/./node_modules/geojson-normalize/index.js","webpack://VueSoftProUI/./node_modules/geojson-random/index.js","webpack://VueSoftProUI/./node_modules/incremental-convex-hull/ich.js","webpack://VueSoftProUI/./node_modules/jsts/dist/jsts.min.js","webpack://VueSoftProUI/./node_modules/mapbox-gl-draw-rectangle-mode/dist/index.js","webpack://VueSoftProUI/./node_modules/monotone-convex-hull-2d/index.js","webpack://VueSoftProUI/./node_modules/robust-orientation/orientation.js","webpack://VueSoftProUI/./node_modules/robust-scale/robust-scale.js","webpack://VueSoftProUI/./node_modules/robust-subtract/robust-diff.js","webpack://VueSoftProUI/./node_modules/robust-sum/robust-sum.js","webpack://VueSoftProUI/./node_modules/simplicial-complex/topology.js","webpack://VueSoftProUI/./node_modules/simplify-js/simplify.js","webpack://VueSoftProUI/./node_modules/turf-along/index.js","webpack://VueSoftProUI/./node_modules/turf-area/index.js","webpack://VueSoftProUI/./node_modules/turf-bbox-polygon/index.js","webpack://VueSoftProUI/./node_modules/turf-bbox/index.js","webpack://VueSoftProUI/./node_modules/turf-bearing/index.js","webpack://VueSoftProUI/./node_modules/turf-bezier/index.js","webpack://VueSoftProUI/./node_modules/turf-bezier/spline.js","webpack://VueSoftProUI/./node_modules/turf-buffer/index.js","webpack://VueSoftProUI/./node_modules/turf-center/index.js","webpack://VueSoftProUI/./node_modules/turf-centroid/index.js","webpack://VueSoftProUI/./node_modules/turf-collect/index.js","webpack://VueSoftProUI/./node_modules/turf-combine/index.js","webpack://VueSoftProUI/./node_modules/turf-concave/index.js","webpack://VueSoftProUI/./node_modules/turf-convex/index.js","webpack://VueSoftProUI/./node_modules/turf-destination/index.js","webpack://VueSoftProUI/./node_modules/turf-difference/index.js","webpack://VueSoftProUI/./node_modules/turf-distance/index.js","webpack://VueSoftProUI/./node_modules/turf-envelope/index.js","webpack://VueSoftProUI/./node_modules/turf-explode/index.js","webpack://VueSoftProUI/./node_modules/turf-flip/index.js","webpack://VueSoftProUI/./node_modules/turf-grid/index.js","webpack://VueSoftProUI/./node_modules/turf-helpers/index.js","webpack://VueSoftProUI/./node_modules/turf-hex-grid/index.js","webpack://VueSoftProUI/./node_modules/turf-inside/index.js","webpack://VueSoftProUI/./node_modules/turf-intersect/index.js","webpack://VueSoftProUI/./node_modules/turf-invariant/index.js","webpack://VueSoftProUI/./node_modules/turf-isolines/conrec.js","webpack://VueSoftProUI/./node_modules/turf-isolines/index.js","webpack://VueSoftProUI/./node_modules/turf-kinks/index.js","webpack://VueSoftProUI/./node_modules/turf-line-distance/index.js","webpack://VueSoftProUI/./node_modules/turf-line-slice/index.js","webpack://VueSoftProUI/./node_modules/turf-meta/index.js","webpack://VueSoftProUI/./node_modules/turf-midpoint/index.js","webpack://VueSoftProUI/./node_modules/turf-nearest/index.js","webpack://VueSoftProUI/./node_modules/turf-planepoint/index.js","webpack://VueSoftProUI/./node_modules/turf-point-grid/index.js","webpack://VueSoftProUI/./node_modules/turf-point-on-line/index.js","webpack://VueSoftProUI/./node_modules/turf-point-on-surface/index.js","webpack://VueSoftProUI/./node_modules/turf-point/index.js","webpack://VueSoftProUI/./node_modules/turf-random/index.js","webpack://VueSoftProUI/./node_modules/turf-sample/index.js","webpack://VueSoftProUI/./node_modules/turf-simplify/index.js","webpack://VueSoftProUI/./node_modules/turf-square-grid/index.js","webpack://VueSoftProUI/./node_modules/turf-square/index.js","webpack://VueSoftProUI/./node_modules/turf-tag/index.js","webpack://VueSoftProUI/./node_modules/turf-tesselate/index.js","webpack://VueSoftProUI/./node_modules/turf-tin/index.js","webpack://VueSoftProUI/./node_modules/turf-triangle-grid/index.js","webpack://VueSoftProUI/./node_modules/turf-union/index.js","webpack://VueSoftProUI/./node_modules/turf-within/index.js","webpack://VueSoftProUI/./node_modules/turf/index.js","webpack://VueSoftProUI/./node_modules/two-product/two-product.js","webpack://VueSoftProUI/./node_modules/two-sum/two-sum.js","webpack://VueSoftProUI/./node_modules/union-find/index.js","webpack://VueSoftProUI/./src/components/basic/vs-button.vue?0358","webpack://VueSoftProUI/./src/components/basic/vs-drop.vue?1027","webpack://VueSoftProUI/./src/components/basic/vs-toast.vue?c2b9","webpack://VueSoftProUI/./src/components/form/geom/components/vs-map-search.vue?6653","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-layers.vue?b5b7","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-legend.vue?8627","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom.vue?3a00","webpack://VueSoftProUI/./src/components/form/layout/vs-form-wrapper.vue?4706","webpack://VueSoftProUI/./src/components/form/misc/vs-form-option.vue?7fee","webpack://VueSoftProUI/./src/components/form/vs-form-ace.vue?2ef6","webpack://VueSoftProUI/./src/components/form/vs-form-checkbox.vue?c0ed","webpack://VueSoftProUI/./src/components/form/vs-form-file.vue?f063","webpack://VueSoftProUI/./src/components/form/vs-form-number.vue?68fe","webpack://VueSoftProUI/./src/components/form/vs-form-select.vue?ac45","webpack://VueSoftProUI/./src/components/form/vs-form-switch.vue?e934","webpack://VueSoftProUI/./src/components/form/vs-form-text.vue?4925","webpack://VueSoftProUI/./src/components/form/vs-form-textarea.vue?a301","webpack://VueSoftProUI/./src/components/form/vs-form-upload.vue?11ad","webpack://VueSoftProUI/./src/components/navigations/vs-dropdown.vue?2bc0","webpack://VueSoftProUI/./src/components/navigations/vs-tabs.vue?bb96","webpack://VueSoftProUI/./src/components/overlays/dialog/vs-dialog.vue?17b5","webpack://VueSoftProUI/./src/components/tooltips/vs-popover.vue?ebe5","webpack://VueSoftProUI/./src/components/form/vs-form-datepicker.vue?8731","webpack://VueSoftProUI/./src/components/form/vs-form-radio.vue?5652","webpack://VueSoftProUI/./node_modules/@toast-ui/editor/dist/toastui-editor.css?afe7","webpack://VueSoftProUI/./node_modules/vue-style-loader/lib/listToStyles.js","webpack://VueSoftProUI/./node_modules/vue-style-loader/lib/addStylesClient.js","webpack://VueSoftProUI/./node_modules/wgs84/index.js","webpack://VueSoftProUI/./src/components/form/mixins/vs-form-mx.js","webpack://VueSoftProUI/./src/components/form/layout/vs-form-wrapper.vue?82b4","webpack://VueSoftProUI/src/components/form/layout/vs-form-wrapper.vue","webpack://VueSoftProUI/./src/components/form/layout/vs-form-wrapper.vue?b4b4","webpack://VueSoftProUI/./src/components/form/layout/vs-form-wrapper.vue","webpack://VueSoftProUI/./src/components/form/vs-form-richtext.vue?0a96","webpack://VueSoftProUI/./node_modules/orderedmap/dist/index.js","webpack://VueSoftProUI/./node_modules/prosemirror-model/dist/index.js","webpack://VueSoftProUI/./node_modules/prosemirror-transform/dist/index.js","webpack://VueSoftProUI/./node_modules/prosemirror-state/dist/index.js","webpack://VueSoftProUI/./node_modules/prosemirror-view/dist/index.js","webpack://VueSoftProUI/./node_modules/w3c-keyname/index.js","webpack://VueSoftProUI/./node_modules/prosemirror-keymap/dist/index.js","webpack://VueSoftProUI/./node_modules/prosemirror-commands/dist/index.js","webpack://VueSoftProUI/./node_modules/prosemirror-inputrules/dist/index.js","webpack://VueSoftProUI/./node_modules/rope-sequence/dist/index.js","webpack://VueSoftProUI/./node_modules/prosemirror-history/dist/index.js","webpack://VueSoftProUI/./node_modules/@toast-ui/editor/dist/esm/index.js","webpack://VueSoftProUI/src/components/form/vs-form-richtext.vue","webpack://VueSoftProUI/./src/components/form/vs-form-richtext.vue?2e29","webpack://VueSoftProUI/./src/components/form/vs-form-richtext.vue","webpack://VueSoftProUI/./src/components/form/vs-form-color-picker.vue?db42","webpack://VueSoftProUI/src/components/form/vs-form-color-picker.vue","webpack://VueSoftProUI/./src/components/form/vs-form-color-picker.vue?da0a","webpack://VueSoftProUI/./src/components/form/vs-form-color-picker.vue","webpack://VueSoftProUI/./src/components/form/vs-form-color.vue?b6e7","webpack://VueSoftProUI/src/components/form/vs-form-color.vue","webpack://VueSoftProUI/./src/components/form/vs-form-color.vue?4587","webpack://VueSoftProUI/./src/components/form/vs-form-color.vue","webpack://VueSoftProUI/./src/components/form/misc/vs-form-option.vue?b1c2","webpack://VueSoftProUI/src/components/form/misc/vs-form-option.vue","webpack://VueSoftProUI/./src/components/form/misc/vs-form-option.vue?a342","webpack://VueSoftProUI/./src/components/form/misc/vs-form-option.vue","webpack://VueSoftProUI/./src/components/form/vs-form-switch.vue?2789","webpack://VueSoftProUI/src/components/form/vs-form-switch.vue","webpack://VueSoftProUI/./src/components/form/vs-form-switch.vue?588d","webpack://VueSoftProUI/./src/components/form/vs-form-switch.vue","webpack://VueSoftProUI/./src/components/form/vs-form-textarea.vue?5748","webpack://VueSoftProUI/src/components/form/vs-form-textarea.vue","webpack://VueSoftProUI/./src/components/form/vs-form-textarea.vue?a266","webpack://VueSoftProUI/./src/components/form/vs-form-textarea.vue","webpack://VueSoftProUI/./src/components/form/vs-form-datepicker.vue?da5d","webpack://VueSoftProUI/src/components/form/vs-form-datepicker.vue","webpack://VueSoftProUI/./src/components/form/vs-form-datepicker.vue?9972","webpack://VueSoftProUI/./src/components/form/vs-form-datepicker.vue","webpack://VueSoftProUI/./src/components/form/vs-form-datetime.vue?6534","webpack://VueSoftProUI/src/components/form/vs-form-datetime.vue","webpack://VueSoftProUI/./src/components/form/vs-form-datetime.vue?2379","webpack://VueSoftProUI/./src/components/form/vs-form-datetime.vue","webpack://VueSoftProUI/./src/components/form/vs-form-upload.vue?0819","webpack://VueSoftProUI/src/components/form/vs-form-upload.vue","webpack://VueSoftProUI/./src/components/form/vs-form-upload.vue?c57b","webpack://VueSoftProUI/./src/components/form/vs-form-upload.vue","webpack://VueSoftProUI/./src/components/form/vs-form-file.vue?f5c0","webpack://VueSoftProUI/src/components/form/vs-form-file.vue","webpack://VueSoftProUI/./src/components/form/vs-form-file.vue?6a82","webpack://VueSoftProUI/./src/components/form/vs-form-file.vue","webpack://VueSoftProUI/./src/components/form/vs-form-ace.vue?d0b9","webpack://VueSoftProUI/./src/vendor/head.js","webpack://VueSoftProUI/src/components/form/vs-form-ace.vue","webpack://VueSoftProUI/./src/components/form/vs-form-ace.vue?bcdd","webpack://VueSoftProUI/./src/components/form/vs-form-ace.vue","webpack://VueSoftProUI/./src/components/basic/vs-drop.vue?6670","webpack://VueSoftProUI/src/components/basic/vs-drop.vue","webpack://VueSoftProUI/./src/components/basic/vs-drop.vue?792b","webpack://VueSoftProUI/./src/components/basic/vs-drop.vue","webpack://VueSoftProUI/./src/components/navigations/vs-tabs.vue?f97f","webpack://VueSoftProUI/src/components/navigations/vs-tabs.vue","webpack://VueSoftProUI/./src/components/navigations/vs-tabs.vue?ac01","webpack://VueSoftProUI/./src/components/navigations/vs-tabs.vue","webpack://VueSoftProUI/./src/components/navigations/misc/vs-tab.vue?8954","webpack://VueSoftProUI/src/components/navigations/misc/vs-tab.vue","webpack://VueSoftProUI/./src/components/navigations/misc/vs-tab.vue?13a2","webpack://VueSoftProUI/./src/components/navigations/misc/vs-tab.vue","webpack://VueSoftProUI/./src/components/navigations/vs-dropdown.vue?b10d","webpack://VueSoftProUI/src/components/navigations/vs-dropdown.vue","webpack://VueSoftProUI/./src/components/navigations/vs-dropdown.vue?d993","webpack://VueSoftProUI/./src/components/navigations/vs-dropdown.vue","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom.vue?c19e","webpack://VueSoftProUI/./src/components/form/geom/components/vs-map-search.vue?a8a4","webpack://VueSoftProUI/src/components/form/geom/components/vs-map-search.vue","webpack://VueSoftProUI/./src/components/form/geom/components/vs-map-search.vue?f332","webpack://VueSoftProUI/./src/components/form/geom/components/vs-map-search.vue","webpack://VueSoftProUI/./src/components/form/geom/map/utils/geojsonStyle.js","webpack://VueSoftProUI/./src/components/form/geom/map/utils/layerMixins.js","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-layers.vue?9041","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-dataset.vue?61f4","webpack://VueSoftProUI/src/components/form/geom/vs-form-geom-dataset.vue","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-dataset.vue?9bef","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-dataset.vue","webpack://VueSoftProUI/src/components/form/geom/vs-form-geom-layers.vue","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-layers.vue?3e4d","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-layers.vue","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-files-transfer.vue?8cec","webpack://VueSoftProUI/./src/mixins/fileapi-mixin.js","webpack://VueSoftProUI/src/components/form/geom/vs-form-geom-files-transfer.vue","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-files-transfer.vue?e0b1","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-files-transfer.vue","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-feature.vue?3001","webpack://VueSoftProUI/./node_modules/@turf/helpers/dist/es/index.js","webpack://VueSoftProUI/./node_modules/@turf/invariant/dist/es/index.js","webpack://VueSoftProUI/./node_modules/@turf/distance/dist/es/index.js","webpack://VueSoftProUI/./node_modules/@turf/meta/dist/es/index.js","webpack://VueSoftProUI/./node_modules/@turf/length/dist/es/index.js","webpack://VueSoftProUI/src/components/form/geom/vs-form-geom-feature.vue","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-feature.vue?3584","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-feature.vue","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-legend.vue?aa44","webpack://VueSoftProUI/src/components/form/geom/vs-form-geom-legend.vue","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-legend.vue?0868","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom-legend.vue","webpack://VueSoftProUI/src/components/form/geom/vs-form-geom.vue","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom.vue?acc8","webpack://VueSoftProUI/./src/components/form/geom/vs-form-geom.vue","webpack://VueSoftProUI/./src/components/form/datatable/vs-form-datatable.vue?94eb","webpack://VueSoftProUI/src/components/form/datatable/vs-form-datatable.vue","webpack://VueSoftProUI/./src/components/form/datatable/vs-form-datatable.vue?5d60","webpack://VueSoftProUI/./src/components/form/datatable/vs-form-datatable.vue","webpack://VueSoftProUI/./src/misc/import-file.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/bind.js","webpack://VueSoftProUI/./node_modules/axios/lib/utils.js","webpack://VueSoftProUI/./node_modules/axios/lib/core/AxiosError.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/null.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/toFormData.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/buildURL.js","webpack://VueSoftProUI/./node_modules/axios/lib/core/InterceptorManager.js","webpack://VueSoftProUI/./node_modules/axios/lib/defaults/transitional.js","webpack://VueSoftProUI/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack://VueSoftProUI/./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack://VueSoftProUI/./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack://VueSoftProUI/./node_modules/axios/lib/platform/browser/index.js","webpack://VueSoftProUI/./node_modules/axios/lib/platform/common/utils.js","webpack://VueSoftProUI/./node_modules/axios/lib/platform/index.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/formDataToJSON.js","webpack://VueSoftProUI/./node_modules/axios/lib/defaults/index.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://VueSoftProUI/./node_modules/axios/lib/core/AxiosHeaders.js","webpack://VueSoftProUI/./node_modules/axios/lib/core/transformData.js","webpack://VueSoftProUI/./node_modules/axios/lib/cancel/isCancel.js","webpack://VueSoftProUI/./node_modules/axios/lib/cancel/CanceledError.js","webpack://VueSoftProUI/./node_modules/axios/lib/core/settle.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/cookies.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/combineURLs.js","webpack://VueSoftProUI/./node_modules/axios/lib/core/buildFullPath.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/speedometer.js","webpack://VueSoftProUI/./node_modules/axios/lib/adapters/xhr.js","webpack://VueSoftProUI/./node_modules/axios/lib/adapters/adapters.js","webpack://VueSoftProUI/./node_modules/axios/lib/core/dispatchRequest.js","webpack://VueSoftProUI/./node_modules/axios/lib/core/mergeConfig.js","webpack://VueSoftProUI/./node_modules/axios/lib/env/data.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/validator.js","webpack://VueSoftProUI/./node_modules/axios/lib/core/Axios.js","webpack://VueSoftProUI/./node_modules/axios/lib/cancel/CancelToken.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/spread.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://VueSoftProUI/./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack://VueSoftProUI/./node_modules/axios/lib/axios.js","webpack://VueSoftProUI/webpack/bootstrap","webpack://VueSoftProUI/webpack/runtime/compat get default export","webpack://VueSoftProUI/webpack/runtime/define property getters","webpack://VueSoftProUI/webpack/runtime/ensure chunk","webpack://VueSoftProUI/webpack/runtime/get javascript chunk filename","webpack://VueSoftProUI/webpack/runtime/global","webpack://VueSoftProUI/webpack/runtime/hasOwnProperty shorthand","webpack://VueSoftProUI/webpack/runtime/load script","webpack://VueSoftProUI/webpack/runtime/make namespace object","webpack://VueSoftProUI/webpack/runtime/publicPath","webpack://VueSoftProUI/webpack/runtime/jsonp chunk loading","webpack://VueSoftProUI/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://VueSoftProUI/./src/components/plugins/templates/modal-templates.js","webpack://VueSoftProUI/./src/components/plugins/modal-plugins.js","webpack://VueSoftProUI/./src/components/index.js","webpack://VueSoftProUI/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"VueSoftProUI\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VueSoftProUI\"] = factory();\n\telse\n\t\troot[\"VueSoftProUI\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn ","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).MapboxDraw=e()}(this,(function(){\"use strict\";var t=function(t,e){var n={drag:[],click:[],mousemove:[],mousedown:[],mouseup:[],mouseout:[],keydown:[],keyup:[],touchstart:[],touchmove:[],touchend:[],tap:[]},o={on:function(t,e,o){if(void 0===n[t])throw new Error(\"Invalid event type: \"+t);n[t].push({selector:e,fn:o})},render:function(t){e.store.featureChanged(t)}},r=function(t,r){for(var i=n[t],a=i.length;a--;){var s=i[a];if(s.selector(r)){s.fn.call(o,r)||e.store.render(),e.ui.updateMapClasses();break}}};return t.start.call(o),{render:t.render,stop:function(){t.stop&&t.stop()},trash:function(){t.trash&&(t.trash(),e.store.render())},combineFeatures:function(){t.combineFeatures&&t.combineFeatures()},uncombineFeatures:function(){t.uncombineFeatures&&t.uncombineFeatures()},drag:function(t){r(\"drag\",t)},click:function(t){r(\"click\",t)},mousemove:function(t){r(\"mousemove\",t)},mousedown:function(t){r(\"mousedown\",t)},mouseup:function(t){r(\"mouseup\",t)},mouseout:function(t){r(\"mouseout\",t)},keydown:function(t){r(\"keydown\",t)},keyup:function(t){r(\"keyup\",t)},touchstart:function(t){r(\"touchstart\",t)},touchmove:function(t){r(\"touchmove\",t)},touchend:function(t){r(\"touchend\",t)},tap:function(t){r(\"tap\",t)}}};function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}function n(t){if(t.__esModule)return t;var e=t.default;if(\"function\"==typeof e){var n=function t(){if(this instanceof t){var n=[null];n.push.apply(n,arguments);var o=Function.bind.apply(e,n);return new o}return e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,\"__esModule\",{value:!0}),Object.keys(t).forEach((function(e){var o=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(n,e,o.get?o:{enumerable:!0,get:function(){return t[e]}})})),n}var o={},r={RADIUS:6378137,FLATTENING:1/298.257223563,POLAR_RADIUS:6356752.3142},i=r;function a(t){var e=0;if(t&&t.length>0){e+=Math.abs(s(t[0]));for(var n=1;n2){for(s=0;s=Math.pow(2,t)?R(t,e):i};R.rack=function(t,e,n){var o=function(o){var i=0;do{if(i++>10){if(!n)throw new Error(\"too many ID collisions, use more bits\");t+=n}var a=R(t,e)}while(Object.hasOwnProperty.call(r,a));return r[a]=o,a},r=o.hats={};return o.get=function(t){return o.hats[t]},o.set=function(t,e){return o.hats[t]=e,o},o.bits=t||128,o.base=e||16,o};var k=e(w.exports),D=function(t,e){this.ctx=t,this.properties=e.properties||{},this.coordinates=e.geometry.coordinates,this.id=e.id||k(),this.type=e.geometry.type};D.prototype.changed=function(){this.ctx.store.featureChanged(this.id)},D.prototype.incomingCoords=function(t){this.setCoordinates(t)},D.prototype.setCoordinates=function(t){this.coordinates=t,this.changed()},D.prototype.getCoordinates=function(){return JSON.parse(JSON.stringify(this.coordinates))},D.prototype.setProperty=function(t,e){this.properties[t]=e},D.prototype.toGeoJSON=function(){return JSON.parse(JSON.stringify({id:this.id,type:f.FEATURE,properties:this.properties,geometry:{coordinates:this.getCoordinates(),type:this.type}}))},D.prototype.internal=function(t){var e={id:this.id,meta:v.FEATURE,\"meta:type\":this.type,active:m.INACTIVE,mode:t};if(this.ctx.options.userProperties)for(var n in this.properties)e[\"user_\"+n]=this.properties[n];return{type:f.FEATURE,properties:e,geometry:{coordinates:this.getCoordinates(),type:this.type}}};var U=function(t,e){D.call(this,t,e)};(U.prototype=Object.create(D.prototype)).isValid=function(){return\"number\"==typeof this.coordinates[0]&&\"number\"==typeof this.coordinates[1]},U.prototype.updateCoordinate=function(t,e,n){this.coordinates=3===arguments.length?[e,n]:[t,e],this.changed()},U.prototype.getCoordinate=function(){return this.getCoordinates()};var j=function(t,e){D.call(this,t,e)};(j.prototype=Object.create(D.prototype)).isValid=function(){return this.coordinates.length>1},j.prototype.addCoordinate=function(t,e,n){this.changed();var o=parseInt(t,10);this.coordinates.splice(o,0,[e,n])},j.prototype.getCoordinate=function(t){var e=parseInt(t,10);return JSON.parse(JSON.stringify(this.coordinates[e]))},j.prototype.removeCoordinate=function(t){this.changed(),this.coordinates.splice(parseInt(t,10),1)},j.prototype.updateCoordinate=function(t,e,n){var o=parseInt(t,10);this.coordinates[o]=[e,n],this.changed()};var V=function(t,e){D.call(this,t,e),this.coordinates=this.coordinates.map((function(t){return t.slice(0,-1)}))};(V.prototype=Object.create(D.prototype)).isValid=function(){return 0!==this.coordinates.length&&this.coordinates.every((function(t){return t.length>2}))},V.prototype.incomingCoords=function(t){this.coordinates=t.map((function(t){return t.slice(0,-1)})),this.changed()},V.prototype.setCoordinates=function(t){this.coordinates=t,this.changed()},V.prototype.addCoordinate=function(t,e,n){this.changed();var o=t.split(\".\").map((function(t){return parseInt(t,10)}));this.coordinates[o[0]].splice(o[1],0,[e,n])},V.prototype.removeCoordinate=function(t){this.changed();var e=t.split(\".\").map((function(t){return parseInt(t,10)})),n=this.coordinates[e[0]];n&&(n.splice(e[1],1),n.length<3&&this.coordinates.splice(e[0],1))},V.prototype.getCoordinate=function(t){var e=t.split(\".\").map((function(t){return parseInt(t,10)})),n=this.coordinates[e[0]];return JSON.parse(JSON.stringify(n[e[1]]))},V.prototype.getCoordinates=function(){return this.coordinates.map((function(t){return t.concat([t[0]])}))},V.prototype.updateCoordinate=function(t,e,n){this.changed();var o=t.split(\".\"),r=parseInt(o[0],10),i=parseInt(o[1],10);void 0===this.coordinates[r]&&(this.coordinates[r]=[]),this.coordinates[r][i]=[e,n]};var B={MultiPoint:U,MultiLineString:j,MultiPolygon:V},G=function(t,e,n,o,r){var i=n.split(\".\"),a=parseInt(i[0],10),s=i[1]?i.slice(1).join(\".\"):null;return t[a][e](s,o,r)},J=function(t,e){if(D.call(this,t,e),delete this.coordinates,this.model=B[e.geometry.type],void 0===this.model)throw new TypeError(e.geometry.type+\" is not a valid type\");this.features=this._coordinatesToFeatures(e.geometry.coordinates)};function z(t){this.map=t.map,this.drawConfig=JSON.parse(JSON.stringify(t.options||{})),this._ctx=t}(J.prototype=Object.create(D.prototype))._coordinatesToFeatures=function(t){var e=this,n=this.model.bind(this);return t.map((function(t){return new n(e.ctx,{id:k(),type:f.FEATURE,properties:{},geometry:{coordinates:t,type:e.type.replace(\"Multi\",\"\")}})}))},J.prototype.isValid=function(){return this.features.every((function(t){return t.isValid()}))},J.prototype.setCoordinates=function(t){this.features=this._coordinatesToFeatures(t),this.changed()},J.prototype.getCoordinate=function(t){return G(this.features,\"getCoordinate\",t)},J.prototype.getCoordinates=function(){return JSON.parse(JSON.stringify(this.features.map((function(t){return t.type===f.POLYGON?t.getCoordinates():t.coordinates}))))},J.prototype.updateCoordinate=function(t,e,n){G(this.features,\"updateCoordinate\",t,e,n),this.changed()},J.prototype.addCoordinate=function(t,e,n){G(this.features,\"addCoordinate\",t,e,n),this.changed()},J.prototype.removeCoordinate=function(t){G(this.features,\"removeCoordinate\",t),this.changed()},J.prototype.getFeatures=function(){return this.features},z.prototype.setSelected=function(t){return this._ctx.store.setSelected(t)},z.prototype.setSelectedCoordinates=function(t){var e=this;this._ctx.store.setSelectedCoordinates(t),t.reduce((function(t,n){return void 0===t[n.feature_id]&&(t[n.feature_id]=!0,e._ctx.store.get(n.feature_id).changed()),t}),{})},z.prototype.getSelected=function(){return this._ctx.store.getSelected()},z.prototype.getSelectedIds=function(){return this._ctx.store.getSelectedIds()},z.prototype.isSelected=function(t){return this._ctx.store.isSelected(t)},z.prototype.getFeature=function(t){return this._ctx.store.get(t)},z.prototype.select=function(t){return this._ctx.store.select(t)},z.prototype.deselect=function(t){return this._ctx.store.deselect(t)},z.prototype.deleteFeature=function(t,e){return void 0===e&&(e={}),this._ctx.store.delete(t,e)},z.prototype.addFeature=function(t){return this._ctx.store.add(t)},z.prototype.clearSelectedFeatures=function(){return this._ctx.store.clearSelected()},z.prototype.clearSelectedCoordinates=function(){return this._ctx.store.clearSelectedCoordinates()},z.prototype.setActionableState=function(t){void 0===t&&(t={});var e={trash:t.trash||!1,combineFeatures:t.combineFeatures||!1,uncombineFeatures:t.uncombineFeatures||!1};return this._ctx.events.actionable(e)},z.prototype.changeMode=function(t,e,n){return void 0===e&&(e={}),void 0===n&&(n={}),this._ctx.events.changeMode(t,e,n)},z.prototype.updateUIClasses=function(t){return this._ctx.ui.queueMapClasses(t)},z.prototype.activateUIButton=function(t){return this._ctx.ui.setActiveButton(t)},z.prototype.featuresAt=function(t,e,n){if(void 0===n&&(n=\"click\"),\"click\"!==n&&\"touch\"!==n)throw new Error(\"invalid buffer type\");return M[n](t,e,this._ctx)},z.prototype.newFeature=function(t){var e=t.geometry.type;return e===f.POINT?new U(this._ctx,t):e===f.LINE_STRING?new j(this._ctx,t):e===f.POLYGON?new V(this._ctx,t):new J(this._ctx,t)},z.prototype.isInstanceOf=function(t,e){if(t===f.POINT)return e instanceof U;if(t===f.LINE_STRING)return e instanceof j;if(t===f.POLYGON)return e instanceof V;if(\"MultiFeature\"===t)return e instanceof J;throw new Error(\"Unknown feature class: \"+t)},z.prototype.doRender=function(t){return this._ctx.store.featureChanged(t)},z.prototype.onSetup=function(){},z.prototype.onDrag=function(){},z.prototype.onClick=function(){},z.prototype.onMouseMove=function(){},z.prototype.onMouseDown=function(){},z.prototype.onMouseUp=function(){},z.prototype.onMouseOut=function(){},z.prototype.onKeyUp=function(){},z.prototype.onKeyDown=function(){},z.prototype.onTouchStart=function(){},z.prototype.onTouchMove=function(){},z.prototype.onTouchEnd=function(){},z.prototype.onTap=function(){},z.prototype.onStop=function(){},z.prototype.onTrash=function(){},z.prototype.onCombineFeature=function(){},z.prototype.onUncombineFeature=function(){},z.prototype.toDisplayFeatures=function(){throw new Error(\"You must overwrite toDisplayFeatures\")};var Y={drag:\"onDrag\",click:\"onClick\",mousemove:\"onMouseMove\",mousedown:\"onMouseDown\",mouseup:\"onMouseUp\",mouseout:\"onMouseOut\",keyup:\"onKeyUp\",keydown:\"onKeyDown\",touchstart:\"onTouchStart\",touchmove:\"onTouchMove\",touchend:\"onTouchEnd\",tap:\"onTap\"},$=Object.keys(Y);function q(t){var e=Object.keys(t);return function(n,o){void 0===o&&(o={});var r={},i=e.reduce((function(e,n){return e[n]=t[n],e}),new z(n));return{start:function(){var e=this;r=i.onSetup(o),$.forEach((function(n){var o,a=Y[n],s=function(){return!1};t[a]&&(s=function(){return!0}),e.on(n,s,(o=a,function(t){return i[o](r,t)}))}))},stop:function(){i.onStop(r)},trash:function(){i.onTrash(r)},combineFeatures:function(){i.onCombineFeatures(r)},uncombineFeatures:function(){i.onUncombineFeatures(r)},render:function(t,e){i.toDisplayFeatures(r,t,e)}}}}function H(t){return[].concat(t).filter((function(t){return void 0!==t}))}function X(){var t=this;if(!(t.ctx.map&&void 0!==t.ctx.map.getSource(l.HOT)))return u();var e=t.ctx.events.currentModeName();t.ctx.ui.queueMapClasses({mode:e});var n=[],o=[];t.isDirty?o=t.getAllIds():(n=t.getChangedIds().filter((function(e){return void 0!==t.get(e)})),o=t.sources.hot.filter((function(e){return e.properties.id&&-1===n.indexOf(e.properties.id)&&void 0!==t.get(e.properties.id)})).map((function(t){return t.properties.id}))),t.sources.hot=[];var r=t.sources.cold.length;t.sources.cold=t.isDirty?[]:t.sources.cold.filter((function(t){var e=t.properties.id||t.properties.parent;return-1===n.indexOf(e)}));var i=r!==t.sources.cold.length||o.length>0;function a(n,o){var r=t.get(n).internal(e);t.ctx.events.currentModeRender(r,(function(e){t.sources[o].push(e)}))}if(n.forEach((function(t){return a(t,\"hot\")})),o.forEach((function(t){return a(t,\"cold\")})),i&&t.ctx.map.getSource(l.COLD).setData({type:f.FEATURE_COLLECTION,features:t.sources.cold}),t.ctx.map.getSource(l.HOT).setData({type:f.FEATURE_COLLECTION,features:t.sources.hot}),t._emitSelectionChange&&(t.ctx.map.fire(g.SELECTION_CHANGE,{features:t.getSelected().map((function(t){return t.toGeoJSON()})),points:t.getSelectedCoordinates().map((function(t){return{type:f.FEATURE,properties:{},geometry:{type:f.POINT,coordinates:t.coordinates}}}))}),t._emitSelectionChange=!1),t._deletedFeaturesToEmit.length){var s=t._deletedFeaturesToEmit.map((function(t){return t.toGeoJSON()}));t._deletedFeaturesToEmit=[],t.ctx.map.fire(g.DELETE,{features:s})}function u(){t.isDirty=!1,t.clearChangedIds()}u(),t.ctx.map.fire(g.RENDER,{})}function Z(t){var e,n=this;this._features={},this._featureIds=new I,this._selectedFeatureIds=new I,this._selectedCoordinates=[],this._changedFeatureIds=new I,this._deletedFeaturesToEmit=[],this._emitSelectionChange=!1,this._mapInitialConfig={},this.ctx=t,this.sources={hot:[],cold:[]},this.render=function(){e||(e=requestAnimationFrame((function(){e=null,X.call(n)})))},this.isDirty=!1}function W(t,e){var n=t._selectedCoordinates.filter((function(e){return t._selectedFeatureIds.has(e.feature_id)}));t._selectedCoordinates.length===n.length||e.silent||(t._emitSelectionChange=!0),t._selectedCoordinates=n}Z.prototype.createRenderBatch=function(){var t=this,e=this.render,n=0;return this.render=function(){n++},function(){t.render=e,n>0&&t.render()}},Z.prototype.setDirty=function(){return this.isDirty=!0,this},Z.prototype.featureChanged=function(t){return this._changedFeatureIds.add(t),this},Z.prototype.getChangedIds=function(){return this._changedFeatureIds.values()},Z.prototype.clearChangedIds=function(){return this._changedFeatureIds.clear(),this},Z.prototype.getAllIds=function(){return this._featureIds.values()},Z.prototype.add=function(t){return this.featureChanged(t.id),this._features[t.id]=t,this._featureIds.add(t.id),this},Z.prototype.delete=function(t,e){var n=this;return void 0===e&&(e={}),H(t).forEach((function(t){n._featureIds.has(t)&&(n._featureIds.delete(t),n._selectedFeatureIds.delete(t),e.silent||-1===n._deletedFeaturesToEmit.indexOf(n._features[t])&&n._deletedFeaturesToEmit.push(n._features[t]),delete n._features[t],n.isDirty=!0)})),W(this,e),this},Z.prototype.get=function(t){return this._features[t]},Z.prototype.getAll=function(){var t=this;return Object.keys(this._features).map((function(e){return t._features[e]}))},Z.prototype.select=function(t,e){var n=this;return void 0===e&&(e={}),H(t).forEach((function(t){n._selectedFeatureIds.has(t)||(n._selectedFeatureIds.add(t),n._changedFeatureIds.add(t),e.silent||(n._emitSelectionChange=!0))})),this},Z.prototype.deselect=function(t,e){var n=this;return void 0===e&&(e={}),H(t).forEach((function(t){n._selectedFeatureIds.has(t)&&(n._selectedFeatureIds.delete(t),n._changedFeatureIds.add(t),e.silent||(n._emitSelectionChange=!0))})),W(this,e),this},Z.prototype.clearSelected=function(t){return void 0===t&&(t={}),this.deselect(this._selectedFeatureIds.values(),{silent:t.silent}),this},Z.prototype.setSelected=function(t,e){var n=this;return void 0===e&&(e={}),t=H(t),this.deselect(this._selectedFeatureIds.values().filter((function(e){return-1===t.indexOf(e)})),{silent:e.silent}),this.select(t.filter((function(t){return!n._selectedFeatureIds.has(t)})),{silent:e.silent}),this},Z.prototype.setSelectedCoordinates=function(t){return this._selectedCoordinates=t,this._emitSelectionChange=!0,this},Z.prototype.clearSelectedCoordinates=function(){return this._selectedCoordinates=[],this._emitSelectionChange=!0,this},Z.prototype.getSelectedIds=function(){return this._selectedFeatureIds.values()},Z.prototype.getSelected=function(){var t=this;return this._selectedFeatureIds.values().map((function(e){return t.get(e)}))},Z.prototype.getSelectedCoordinates=function(){var t=this;return this._selectedCoordinates.map((function(e){return{coordinates:t.get(e.feature_id).getCoordinate(e.coord_path)}}))},Z.prototype.isSelected=function(t){return this._selectedFeatureIds.has(t)},Z.prototype.setFeatureProperty=function(t,e,n){this.get(t).setProperty(e,n),this.featureChanged(t)},Z.prototype.storeMapConfig=function(){var t=this;_.forEach((function(e){t.ctx.map[e]&&(t._mapInitialConfig[e]=t.ctx.map[e].isEnabled())}))},Z.prototype.restoreMapConfig=function(){var t=this;Object.keys(this._mapInitialConfig).forEach((function(e){t._mapInitialConfig[e]?t.ctx.map[e].enable():t.ctx.map[e].disable()}))},Z.prototype.getInitialConfigValue=function(t){return void 0===this._mapInitialConfig[t]||this._mapInitialConfig[t]};var K=function(){for(var t=arguments,e={},n=0;n=48&&t<=57)};function c(o,r,i){void 0===i&&(i={}),s.stop();var u=n[o];if(void 0===u)throw new Error(o+\" is not valid\");a=o;var c=u(e,r);s=t(c,e),i.silent||e.map.fire(g.MODE_CHANGE,{mode:o}),e.store.setDirty(),e.store.render()}i.keydown=function(t){(t.srcElement||t.target).classList.contains(\"mapboxgl-canvas\")&&(8!==t.keyCode&&46!==t.keyCode||!e.options.controls.trash?u(t.keyCode)?s.keydown(t):49===t.keyCode&&e.options.controls.point?c(h.DRAW_POINT):50===t.keyCode&&e.options.controls.line_string?c(h.DRAW_LINE_STRING):51===t.keyCode&&e.options.controls.polygon&&c(h.DRAW_POLYGON):(t.preventDefault(),s.trash()))},i.keyup=function(t){u(t.keyCode)&&s.keyup(t)},i.zoomend=function(){e.store.changeZoom()},i.data=function(t){if(\"style\"===t.dataType){var n=e.setup,o=e.map,r=e.options,i=e.store;r.styles.some((function(t){return o.getLayer(t.id)}))||(n.addLayers(),i.setDirty(),i.render())}};var l={trash:!1,combineFeatures:!1,uncombineFeatures:!1};return{start:function(){a=e.options.defaultMode,s=t(n[a](e),e)},changeMode:c,actionable:function(t){var n=!1;Object.keys(t).forEach((function(e){if(void 0===l[e])throw new Error(\"Invalid action type\");l[e]!==t[e]&&(n=!0),l[e]=t[e]})),n&&e.map.fire(g.ACTIONABLE,{actions:l})},currentModeName:function(){return a},currentModeRender:function(t,e){return s.render(t,e)},fire:function(t,e){i[t]&&i[t](e)},addEventListeners:function(){e.map.on(\"mousemove\",i.mousemove),e.map.on(\"mousedown\",i.mousedown),e.map.on(\"mouseup\",i.mouseup),e.map.on(\"data\",i.data),e.map.on(\"touchmove\",i.touchmove),e.map.on(\"touchstart\",i.touchstart),e.map.on(\"touchend\",i.touchend),e.container.addEventListener(\"mouseout\",i.mouseout),e.options.keybindings&&(e.container.addEventListener(\"keydown\",i.keydown),e.container.addEventListener(\"keyup\",i.keyup))},removeEventListeners:function(){e.map.off(\"mousemove\",i.mousemove),e.map.off(\"mousedown\",i.mousedown),e.map.off(\"mouseup\",i.mouseup),e.map.off(\"data\",i.data),e.map.off(\"touchmove\",i.touchmove),e.map.off(\"touchstart\",i.touchstart),e.map.off(\"touchend\",i.touchend),e.container.removeEventListener(\"mouseout\",i.mouseout),e.options.keybindings&&(e.container.removeEventListener(\"keydown\",i.keydown),e.container.removeEventListener(\"keyup\",i.keyup))},trash:function(t){s.trash(t)},combineFeatures:function(){s.combineFeatures()},uncombineFeatures:function(){s.uncombineFeatures()},getMode:function(){return a}}}(e),e.ui=function(t){var e={},n=null,o={mode:null,feature:null,mouse:null},r={mode:null,feature:null,mouse:null};function i(t){r=tt(r,t)}function a(){var e,n;if(t.container){var i=[],a=[];et.forEach((function(t){r[t]!==o[t]&&(i.push(t+\"-\"+o[t]),null!==r[t]&&a.push(t+\"-\"+r[t]))})),i.length>0&&(e=t.container.classList).remove.apply(e,i),a.length>0&&(n=t.container.classList).add.apply(n,a),o=tt(o,r)}}function s(t,e){void 0===e&&(e={});var o=document.createElement(\"button\");return o.className=c.CONTROL_BUTTON+\" \"+e.className,o.setAttribute(\"title\",e.title),e.container.appendChild(o),o.addEventListener(\"click\",(function(o){if(o.preventDefault(),o.stopPropagation(),o.target===n)return u(),void e.onDeactivate();l(t),e.onActivate()}),!0),o}function u(){n&&(n.classList.remove(c.ACTIVE_BUTTON),n=null)}function l(t){u();var o=e[t];o&&o&&\"trash\"!==t&&(o.classList.add(c.ACTIVE_BUTTON),n=o)}return{setActiveButton:l,queueMapClasses:i,updateMapClasses:a,clearMapClasses:function(){i({mode:null,feature:null,mouse:null}),a()},addButtons:function(){var n=t.options.controls,o=document.createElement(\"div\");return o.className=c.CONTROL_GROUP+\" \"+c.CONTROL_BASE,n?(n[p.LINE]&&(e[p.LINE]=s(p.LINE,{container:o,className:c.CONTROL_BUTTON_LINE,title:\"LineString tool \"+(t.options.keybindings?\"(l)\":\"\"),onActivate:function(){return t.events.changeMode(h.DRAW_LINE_STRING)},onDeactivate:function(){return t.events.trash()}})),n[p.POLYGON]&&(e[p.POLYGON]=s(p.POLYGON,{container:o,className:c.CONTROL_BUTTON_POLYGON,title:\"Polygon tool \"+(t.options.keybindings?\"(p)\":\"\"),onActivate:function(){return t.events.changeMode(h.DRAW_POLYGON)},onDeactivate:function(){return t.events.trash()}})),n[p.POINT]&&(e[p.POINT]=s(p.POINT,{container:o,className:c.CONTROL_BUTTON_POINT,title:\"Marker tool \"+(t.options.keybindings?\"(m)\":\"\"),onActivate:function(){return t.events.changeMode(h.DRAW_POINT)},onDeactivate:function(){return t.events.trash()}})),n.trash&&(e.trash=s(\"trash\",{container:o,className:c.CONTROL_BUTTON_TRASH,title:\"Delete\",onActivate:function(){t.events.trash()}})),n.combine_features&&(e.combine_features=s(\"combineFeatures\",{container:o,className:c.CONTROL_BUTTON_COMBINE_FEATURES,title:\"Combine\",onActivate:function(){t.events.combineFeatures()}})),n.uncombine_features&&(e.uncombine_features=s(\"uncombineFeatures\",{container:o,className:c.CONTROL_BUTTON_UNCOMBINE_FEATURES,title:\"Uncombine\",onActivate:function(){t.events.uncombineFeatures()}})),o):o},removeButtons:function(){Object.keys(e).forEach((function(t){var n=e[t];n.parentNode&&n.parentNode.removeChild(n),delete e[t]}))}}}(e),e.container=i.getContainer(),e.store=new Z(e),n=e.ui.addButtons(),e.options.boxSelect&&(e.boxZoomInitial=i.boxZoom.isEnabled(),i.boxZoom.disable(),i.dragPan.disable(),i.dragPan.enable()),i.loaded()?r.connect():(i.on(\"load\",r.connect),o=setInterval((function(){i.loaded()&&r.connect()}),16)),e.events.start(),n},addLayers:function(){e.map.addSource(l.COLD,{data:{type:f.FEATURE_COLLECTION,features:[]},type:\"geojson\"}),e.map.addSource(l.HOT,{data:{type:f.FEATURE_COLLECTION,features:[]},type:\"geojson\"}),e.options.styles.forEach((function(t){e.map.addLayer(t)})),e.store.setDirty(!0),e.store.render()},removeLayers:function(){e.options.styles.forEach((function(t){e.map.getLayer(t.id)&&e.map.removeLayer(t.id)})),e.map.getSource(l.COLD)&&e.map.removeSource(l.COLD),e.map.getSource(l.HOT)&&e.map.removeSource(l.HOT)}};return e.setup=r,r}var ot=[{id:\"gl-draw-polygon-fill-inactive\",type:\"fill\",filter:[\"all\",[\"==\",\"active\",\"false\"],[\"==\",\"$type\",\"Polygon\"],[\"!=\",\"mode\",\"static\"]],paint:{\"fill-color\":\"#3bb2d0\",\"fill-outline-color\":\"#3bb2d0\",\"fill-opacity\":.1}},{id:\"gl-draw-polygon-fill-active\",type:\"fill\",filter:[\"all\",[\"==\",\"active\",\"true\"],[\"==\",\"$type\",\"Polygon\"]],paint:{\"fill-color\":\"#fbb03b\",\"fill-outline-color\":\"#fbb03b\",\"fill-opacity\":.1}},{id:\"gl-draw-polygon-midpoint\",type:\"circle\",filter:[\"all\",[\"==\",\"$type\",\"Point\"],[\"==\",\"meta\",\"midpoint\"]],paint:{\"circle-radius\":3,\"circle-color\":\"#fbb03b\"}},{id:\"gl-draw-polygon-stroke-inactive\",type:\"line\",filter:[\"all\",[\"==\",\"active\",\"false\"],[\"==\",\"$type\",\"Polygon\"],[\"!=\",\"mode\",\"static\"]],layout:{\"line-cap\":\"round\",\"line-join\":\"round\"},paint:{\"line-color\":\"#3bb2d0\",\"line-width\":2}},{id:\"gl-draw-polygon-stroke-active\",type:\"line\",filter:[\"all\",[\"==\",\"active\",\"true\"],[\"==\",\"$type\",\"Polygon\"]],layout:{\"line-cap\":\"round\",\"line-join\":\"round\"},paint:{\"line-color\":\"#fbb03b\",\"line-dasharray\":[.2,2],\"line-width\":2}},{id:\"gl-draw-line-inactive\",type:\"line\",filter:[\"all\",[\"==\",\"active\",\"false\"],[\"==\",\"$type\",\"LineString\"],[\"!=\",\"mode\",\"static\"]],layout:{\"line-cap\":\"round\",\"line-join\":\"round\"},paint:{\"line-color\":\"#3bb2d0\",\"line-width\":2}},{id:\"gl-draw-line-active\",type:\"line\",filter:[\"all\",[\"==\",\"$type\",\"LineString\"],[\"==\",\"active\",\"true\"]],layout:{\"line-cap\":\"round\",\"line-join\":\"round\"},paint:{\"line-color\":\"#fbb03b\",\"line-dasharray\":[.2,2],\"line-width\":2}},{id:\"gl-draw-polygon-and-line-vertex-stroke-inactive\",type:\"circle\",filter:[\"all\",[\"==\",\"meta\",\"vertex\"],[\"==\",\"$type\",\"Point\"],[\"!=\",\"mode\",\"static\"]],paint:{\"circle-radius\":5,\"circle-color\":\"#fff\"}},{id:\"gl-draw-polygon-and-line-vertex-inactive\",type:\"circle\",filter:[\"all\",[\"==\",\"meta\",\"vertex\"],[\"==\",\"$type\",\"Point\"],[\"!=\",\"mode\",\"static\"]],paint:{\"circle-radius\":3,\"circle-color\":\"#fbb03b\"}},{id:\"gl-draw-point-point-stroke-inactive\",type:\"circle\",filter:[\"all\",[\"==\",\"active\",\"false\"],[\"==\",\"$type\",\"Point\"],[\"==\",\"meta\",\"feature\"],[\"!=\",\"mode\",\"static\"]],paint:{\"circle-radius\":5,\"circle-opacity\":1,\"circle-color\":\"#fff\"}},{id:\"gl-draw-point-inactive\",type:\"circle\",filter:[\"all\",[\"==\",\"active\",\"false\"],[\"==\",\"$type\",\"Point\"],[\"==\",\"meta\",\"feature\"],[\"!=\",\"mode\",\"static\"]],paint:{\"circle-radius\":3,\"circle-color\":\"#3bb2d0\"}},{id:\"gl-draw-point-stroke-active\",type:\"circle\",filter:[\"all\",[\"==\",\"$type\",\"Point\"],[\"==\",\"active\",\"true\"],[\"!=\",\"meta\",\"midpoint\"]],paint:{\"circle-radius\":7,\"circle-color\":\"#fff\"}},{id:\"gl-draw-point-active\",type:\"circle\",filter:[\"all\",[\"==\",\"$type\",\"Point\"],[\"!=\",\"meta\",\"midpoint\"],[\"==\",\"active\",\"true\"]],paint:{\"circle-radius\":5,\"circle-color\":\"#fbb03b\"}},{id:\"gl-draw-polygon-fill-static\",type:\"fill\",filter:[\"all\",[\"==\",\"mode\",\"static\"],[\"==\",\"$type\",\"Polygon\"]],paint:{\"fill-color\":\"#404040\",\"fill-outline-color\":\"#404040\",\"fill-opacity\":.1}},{id:\"gl-draw-polygon-stroke-static\",type:\"line\",filter:[\"all\",[\"==\",\"mode\",\"static\"],[\"==\",\"$type\",\"Polygon\"]],layout:{\"line-cap\":\"round\",\"line-join\":\"round\"},paint:{\"line-color\":\"#404040\",\"line-width\":2}},{id:\"gl-draw-line-static\",type:\"line\",filter:[\"all\",[\"==\",\"mode\",\"static\"],[\"==\",\"$type\",\"LineString\"]],layout:{\"line-cap\":\"round\",\"line-join\":\"round\"},paint:{\"line-color\":\"#404040\",\"line-width\":2}},{id:\"gl-draw-point-static\",type:\"circle\",filter:[\"all\",[\"==\",\"mode\",\"static\"],[\"==\",\"$type\",\"Point\"]],paint:{\"circle-radius\":5,\"circle-color\":\"#404040\"}}];function rt(t){return function(e){var n=e.featureTarget;return!!n&&(!!n.properties&&n.properties.meta===t)}}function it(t){return!!t.originalEvent&&(!!t.originalEvent.shiftKey&&0===t.originalEvent.button)}function at(t){return!!t.featureTarget&&(!!t.featureTarget.properties&&(t.featureTarget.properties.active===m.ACTIVE&&t.featureTarget.properties.meta===v.FEATURE))}function st(t){return!!t.featureTarget&&(!!t.featureTarget.properties&&(t.featureTarget.properties.active===m.INACTIVE&&t.featureTarget.properties.meta===v.FEATURE))}function ut(t){return void 0===t.featureTarget}function ct(t){return!!t.featureTarget&&(!!t.featureTarget.properties&&t.featureTarget.properties.meta===v.FEATURE)}function lt(t){var e=t.featureTarget;return!!e&&(!!e.properties&&e.properties.meta===v.VERTEX)}function dt(t){return!!t.originalEvent&&!0===t.originalEvent.shiftKey}function pt(t){return 27===t.keyCode}function ft(t){return 13===t.keyCode}var ht=Object.freeze({__proto__:null,isOfMetaType:rt,isShiftMousedown:it,isActiveFeature:at,isInactiveFeature:st,noTarget:ut,isFeature:ct,isVertex:lt,isShiftDown:dt,isEscapeKey:pt,isEnterKey:ft,isTrue:function(){return!0}}),gt=yt;function yt(t,e){this.x=t,this.y=e}yt.prototype={clone:function(){return new yt(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,n=t.y-this.y;return e*e+n*n},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[0]*this.x+t[1]*this.y,n=t[2]*this.x+t[3]*this.y;return this.x=e,this.y=n,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),n=Math.sin(t),o=e*this.x-n*this.y,r=n*this.x+e*this.y;return this.x=o,this.y=r,this},_rotateAround:function(t,e){var n=Math.cos(t),o=Math.sin(t),r=e.x+n*(this.x-e.x)-o*(this.y-e.y),i=e.y+o*(this.x-e.x)+n*(this.y-e.y);return this.x=r,this.y=i,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},yt.convert=function(t){return t instanceof yt?t:Array.isArray(t)?new yt(t[0],t[1]):t};var vt=e(gt);function mt(t,e){var n=e.getBoundingClientRect();return new vt(t.clientX-n.left-(e.clientLeft||0),t.clientY-n.top-(e.clientTop||0))}function _t(t,e,n,o){return{type:f.FEATURE,properties:{meta:v.VERTEX,parent:t,coord_path:n,active:o?m.ACTIVE:m.INACTIVE},geometry:{type:f.POINT,coordinates:e}}}function bt(t,e,n){var o=e.geometry.coordinates,r=n.geometry.coordinates;if(o[1]>85||o[1]85||r[1]=e&&this._bbox[3]>=n},Jt.prototype.intersect=function(t){return this._valid?(e=t instanceof Jt?t.bbox():t,!(this._bbox[0]>e[2]||this._bbox[2]e[3])):null;var e},Jt.prototype._fastContains=function(){if(!this._valid)return new Function(\"return null;\");var t=\"return \"+this._bbox[0]+\"<= ll[0] &&\"+this._bbox[1]+\"<= ll[1] &&\"+this._bbox[2]+\">= ll[0] &&\"+this._bbox[3]+\">= ll[1]\";return new Function(\"ll\",t)},Jt.prototype.polygon=function(){return this._valid?{type:\"Polygon\",coordinates:[[[this._bbox[0],this._bbox[1]],[this._bbox[2],this._bbox[1]],[this._bbox[2],this._bbox[3]],[this._bbox[0],this._bbox[3]],[this._bbox[0],this._bbox[1]]]]}:null};var zt=function(t){if(!t)return[];var e=Lt(Mt(t)),n=[];return e.features.forEach((function(t){t.geometry&&(n=n.concat(Nt(t.geometry.coordinates)))})),n},Yt=Bt,$t=Gt,qt={features:[\"FeatureCollection\"],coordinates:[\"Point\",\"MultiPoint\",\"LineString\",\"MultiLineString\",\"Polygon\",\"MultiPolygon\"],geometry:[\"Feature\"],geometries:[\"GeometryCollection\"]},Ht=Object.keys(qt);function Xt(t){for(var e=$t(),n=zt(t),o=0;on&&(n=u),cr&&(r=c),us&&(s=d)}));var u=e;return n+u.lat>85&&(u.lat=85-n),r+u.lat>90&&(u.lat=90-r),o+u.lat<-85&&(u.lat=-85-o),i+u.lat=270&&(u.lng-=360*Math.ceil(Math.abs(u.lng)/360)),u}function Qt(t,e){var n=Kt(t.map((function(t){return t.toGeoJSON()})),e);t.forEach((function(t){var e,o=t.getCoordinates(),r=function(t){var e={lng:t[0]+n.lng,lat:t[1]+n.lat};return[e.lng,e.lat]},i=function(t){return t.map((function(t){return r(t)}))};t.type===f.POINT?e=r(o):t.type===f.LINE_STRING||t.type===f.MULTI_POINT?e=o.map(r):t.type===f.POLYGON||t.type===f.MULTI_LINE_STRING?e=o.map(i):t.type===f.MULTI_POLYGON&&(e=o.map((function(t){return t.map((function(t){return i(t)}))}))),t.incomingCoords(e)}))}var te={onSetup:function(t){var e=this,n={dragMoveLocation:null,boxSelectStartLocation:null,boxSelectElement:void 0,boxSelecting:!1,canBoxSelect:!1,dragMoving:!1,canDragMove:!1,initiallySelectedFeatureIds:t.featureIds||[]};return this.setSelected(n.initiallySelectedFeatureIds.filter((function(t){return void 0!==e.getFeature(t)}))),this.fireActionable(),this.setActionableState({combineFeatures:!0,uncombineFeatures:!0,trash:!0}),n},fireUpdate:function(){this.map.fire(g.UPDATE,{action:y.MOVE,features:this.getSelected().map((function(t){return t.toGeoJSON()}))})},fireActionable:function(){var t=this,e=this.getSelected(),n=e.filter((function(e){return t.isInstanceOf(\"MultiFeature\",e)})),o=!1;if(e.length>1){o=!0;var r=e[0].type.replace(\"Multi\",\"\");e.forEach((function(t){t.type.replace(\"Multi\",\"\")!==r&&(o=!1)}))}var i=n.length>0,a=e.length>0;this.setActionableState({combineFeatures:o,uncombineFeatures:i,trash:a})},getUniqueIds:function(t){return t.length?t.map((function(t){return t.properties.id})).filter((function(t){return void 0!==t})).reduce((function(t,e){return t.add(e),t}),new I).values():[]},stopExtendedInteractions:function(t){t.boxSelectElement&&(t.boxSelectElement.parentNode&&t.boxSelectElement.parentNode.removeChild(t.boxSelectElement),t.boxSelectElement=null),this.map.dragPan.enable(),t.boxSelecting=!1,t.canBoxSelect=!1,t.dragMoving=!1,t.canDragMove=!1},onStop:function(){Tt.enable(this)},onMouseMove:function(t,e){return ct(e)&&t.dragMoving&&this.fireUpdate(),this.stopExtendedInteractions(t),!0},onMouseOut:function(t){return!t.dragMoving||this.fireUpdate()}};te.onTap=te.onClick=function(t,e){return ut(e)?this.clickAnywhere(t,e):rt(v.VERTEX)(e)?this.clickOnVertex(t,e):ct(e)?this.clickOnFeature(t,e):void 0},te.clickAnywhere=function(t){var e=this,n=this.getSelectedIds();n.length&&(this.clearSelectedFeatures(),n.forEach((function(t){return e.doRender(t)}))),Tt.enable(this),this.stopExtendedInteractions(t)},te.clickOnVertex=function(t,e){this.changeMode(h.DIRECT_SELECT,{featureId:e.featureTarget.properties.parent,coordPath:e.featureTarget.properties.coord_path,startPos:e.lngLat}),this.updateUIClasses({mouse:d.MOVE})},te.startOnActiveFeature=function(t,e){this.stopExtendedInteractions(t),this.map.dragPan.disable(),this.doRender(e.featureTarget.properties.id),t.canDragMove=!0,t.dragMoveLocation=e.lngLat},te.clickOnFeature=function(t,e){var n=this;Tt.disable(this),this.stopExtendedInteractions(t);var o=dt(e),r=this.getSelectedIds(),i=e.featureTarget.properties.id,a=this.isSelected(i);if(!o&&a&&this.getFeature(i).type!==f.POINT)return this.changeMode(h.DIRECT_SELECT,{featureId:i});a&&o?(this.deselect(i),this.updateUIClasses({mouse:d.POINTER}),1===r.length&&Tt.enable(this)):!a&&o?(this.select(i),this.updateUIClasses({mouse:d.MOVE})):a||o||(r.forEach((function(t){return n.doRender(t)})),this.setSelected(i),this.updateUIClasses({mouse:d.MOVE})),this.doRender(i)},te.onMouseDown=function(t,e){return at(e)?this.startOnActiveFeature(t,e):this.drawConfig.boxSelect&&it(e)?this.startBoxSelect(t,e):void 0},te.startBoxSelect=function(t,e){this.stopExtendedInteractions(t),this.map.dragPan.disable(),t.boxSelectStartLocation=mt(e.originalEvent,this.map.getContainer()),t.canBoxSelect=!0},te.onTouchStart=function(t,e){if(at(e))return this.startOnActiveFeature(t,e)},te.onDrag=function(t,e){return t.canDragMove?this.dragMove(t,e):this.drawConfig.boxSelect&&t.canBoxSelect?this.whileBoxSelect(t,e):void 0},te.whileBoxSelect=function(t,e){t.boxSelecting=!0,this.updateUIClasses({mouse:d.ADD}),t.boxSelectElement||(t.boxSelectElement=document.createElement(\"div\"),t.boxSelectElement.classList.add(c.BOX_SELECT),this.map.getContainer().appendChild(t.boxSelectElement));var n=mt(e.originalEvent,this.map.getContainer()),o=Math.min(t.boxSelectStartLocation.x,n.x),r=Math.max(t.boxSelectStartLocation.x,n.x),i=Math.min(t.boxSelectStartLocation.y,n.y),a=Math.max(t.boxSelectStartLocation.y,n.y),s=\"translate(\"+o+\"px, \"+i+\"px)\";t.boxSelectElement.style.transform=s,t.boxSelectElement.style.WebkitTransform=s,t.boxSelectElement.style.width=r-o+\"px\",t.boxSelectElement.style.height=a-i+\"px\"},te.dragMove=function(t,e){t.dragMoving=!0,e.originalEvent.stopPropagation();var n={lng:e.lngLat.lng-t.dragMoveLocation.lng,lat:e.lngLat.lat-t.dragMoveLocation.lat};Qt(this.getSelected(),n),t.dragMoveLocation=e.lngLat},te.onTouchEnd=te.onMouseUp=function(t,e){var n=this;if(t.dragMoving)this.fireUpdate();else if(t.boxSelecting){var o=[t.boxSelectStartLocation,mt(e.originalEvent,this.map.getContainer())],r=this.featuresAt(null,o,\"click\"),i=this.getUniqueIds(r).filter((function(t){return!n.isSelected(t)}));i.length&&(this.select(i),i.forEach((function(t){return n.doRender(t)})),this.updateUIClasses({mouse:d.MOVE}))}this.stopExtendedInteractions(t)},te.toDisplayFeatures=function(t,e,n){e.properties.active=this.isSelected(e.properties.id)?m.ACTIVE:m.INACTIVE,n(e),this.fireActionable(),e.properties.active===m.ACTIVE&&e.geometry.type!==f.POINT&&Et(e).forEach(n)},te.onTrash=function(){this.deleteFeature(this.getSelectedIds()),this.fireActionable()},te.onCombineFeatures=function(){var t=this.getSelected();if(!(0===t.length||t.length<2)){for(var e=[],n=[],o=t[0].type.replace(\"Multi\",\"\"),r=0;r1){var a=this.newFeature({type:f.FEATURE,properties:n[0].properties,geometry:{type:\"Multi\"+o,coordinates:e}});this.addFeature(a),this.deleteFeature(this.getSelectedIds(),{silent:!0}),this.setSelected([a.id]),this.map.fire(g.COMBINE_FEATURES,{createdFeatures:[a.toGeoJSON()],deletedFeatures:n})}this.fireActionable()}},te.onUncombineFeatures=function(){var t=this,e=this.getSelected();if(0!==e.length){for(var n=[],o=[],r=function(r){var i=e[r];t.isInstanceOf(\"MultiFeature\",i)&&(i.getFeatures().forEach((function(e){t.addFeature(e),e.properties=i.properties,n.push(e.toGeoJSON()),t.select([e.id])})),t.deleteFeature(i.id,{silent:!0}),o.push(i.toGeoJSON()))},i=0;i1&&this.map.fire(g.UNCOMBINE_FEATURES,{createdFeatures:n,deletedFeatures:o}),this.fireActionable()}};var ee=rt(v.VERTEX),ne=rt(v.MIDPOINT),oe={fireUpdate:function(){this.map.fire(g.UPDATE,{action:y.CHANGE_COORDINATES,features:this.getSelected().map((function(t){return t.toGeoJSON()}))})},fireActionable:function(t){this.setActionableState({combineFeatures:!1,uncombineFeatures:!1,trash:t.selectedCoordPaths.length>0})},startDragging:function(t,e){this.map.dragPan.disable(),t.canDragMove=!0,t.dragMoveLocation=e.lngLat},stopDragging:function(t){this.map.dragPan.enable(),t.dragMoving=!1,t.canDragMove=!1,t.dragMoveLocation=null},onVertex:function(t,e){this.startDragging(t,e);var n=e.featureTarget.properties,o=t.selectedCoordPaths.indexOf(n.coord_path);dt(e)||-1!==o?dt(e)&&-1===o&&t.selectedCoordPaths.push(n.coord_path):t.selectedCoordPaths=[n.coord_path];var r=this.pathsToCoordinates(t.featureId,t.selectedCoordPaths);this.setSelectedCoordinates(r)},onMidpoint:function(t,e){this.startDragging(t,e);var n=e.featureTarget.properties;t.feature.addCoordinate(n.coord_path,n.lng,n.lat),this.fireUpdate(),t.selectedCoordPaths=[n.coord_path]},pathsToCoordinates:function(t,e){return e.map((function(e){return{feature_id:t,coord_path:e}}))},onFeature:function(t,e){0===t.selectedCoordPaths.length?this.startDragging(t,e):this.stopDragging(t)},dragFeature:function(t,e,n){Qt(this.getSelected(),n),t.dragMoveLocation=e.lngLat},dragVertex:function(t,e,n){for(var o=t.selectedCoordPaths.map((function(e){return t.feature.getCoordinate(e)})),r=Kt(o.map((function(t){return{type:f.FEATURE,properties:{},geometry:{type:f.POINT,coordinates:t}}})),n),i=0;i0?this.dragVertex(t,e,n):this.dragFeature(t,e,n),t.dragMoveLocation=e.lngLat}},oe.onClick=function(t,e){return ut(e)?this.clickNoTarget(t,e):at(e)?this.clickActiveFeature(t,e):st(e)?this.clickInactive(t,e):void this.stopDragging(t)},oe.onTap=function(t,e){return ut(e)?this.clickNoTarget(t,e):at(e)?this.clickActiveFeature(t,e):st(e)?this.clickInactive(t,e):void 0},oe.onTouchEnd=oe.onMouseUp=function(t){t.dragMoving&&this.fireUpdate(),this.stopDragging(t)};var re={};function ie(t,e){return!!t.lngLat&&(t.lngLat.lng===e[0]&&t.lngLat.lat===e[1])}re.onSetup=function(){var t=this.newFeature({type:f.FEATURE,properties:{},geometry:{type:f.POINT,coordinates:[]}});return this.addFeature(t),this.clearSelectedFeatures(),this.updateUIClasses({mouse:d.ADD}),this.activateUIButton(p.POINT),this.setActionableState({trash:!0}),{point:t}},re.stopDrawingAndRemove=function(t){this.deleteFeature([t.point.id],{silent:!0}),this.changeMode(h.SIMPLE_SELECT)},re.onTap=re.onClick=function(t,e){this.updateUIClasses({mouse:d.MOVE}),t.point.updateCoordinate(\"\",e.lngLat.lng,e.lngLat.lat),this.map.fire(g.CREATE,{features:[t.point.toGeoJSON()]}),this.changeMode(h.SIMPLE_SELECT,{featureIds:[t.point.id]})},re.onStop=function(t){this.activateUIButton(),t.point.getCoordinate().length||this.deleteFeature([t.point.id],{silent:!0})},re.toDisplayFeatures=function(t,e,n){var o=e.properties.id===t.point.id;if(e.properties.active=o?m.ACTIVE:m.INACTIVE,!o)return n(e)},re.onTrash=re.stopDrawingAndRemove,re.onKeyUp=function(t,e){if(pt(e)||ft(e))return this.stopDrawingAndRemove(t,e)};var ae={onSetup:function(){var t=this.newFeature({type:f.FEATURE,properties:{},geometry:{type:f.POLYGON,coordinates:[[]]}});return this.addFeature(t),this.clearSelectedFeatures(),Tt.disable(this),this.updateUIClasses({mouse:d.ADD}),this.activateUIButton(p.POLYGON),this.setActionableState({trash:!0}),{polygon:t,currentVertexPosition:0}},clickAnywhere:function(t,e){if(t.currentVertexPosition>0&&ie(e,t.polygon.coordinates[0][t.currentVertexPosition-1]))return this.changeMode(h.SIMPLE_SELECT,{featureIds:[t.polygon.id]});this.updateUIClasses({mouse:d.ADD}),t.polygon.updateCoordinate(\"0.\"+t.currentVertexPosition,e.lngLat.lng,e.lngLat.lat),t.currentVertexPosition++,t.polygon.updateCoordinate(\"0.\"+t.currentVertexPosition,e.lngLat.lng,e.lngLat.lat)},clickOnVertex:function(t){return this.changeMode(h.SIMPLE_SELECT,{featureIds:[t.polygon.id]})},onMouseMove:function(t,e){t.polygon.updateCoordinate(\"0.\"+t.currentVertexPosition,e.lngLat.lng,e.lngLat.lat),lt(e)&&this.updateUIClasses({mouse:d.POINTER})}};ae.onTap=ae.onClick=function(t,e){return lt(e)?this.clickOnVertex(t,e):this.clickAnywhere(t,e)},ae.onKeyUp=function(t,e){pt(e)?(this.deleteFeature([t.polygon.id],{silent:!0}),this.changeMode(h.SIMPLE_SELECT)):ft(e)&&this.changeMode(h.SIMPLE_SELECT,{featureIds:[t.polygon.id]})},ae.onStop=function(t){this.updateUIClasses({mouse:d.NONE}),Tt.enable(this),this.activateUIButton(),void 0!==this.getFeature(t.polygon.id)&&(t.polygon.removeCoordinate(\"0.\"+t.currentVertexPosition),t.polygon.isValid()?this.map.fire(g.CREATE,{features:[t.polygon.toGeoJSON()]}):(this.deleteFeature([t.polygon.id],{silent:!0}),this.changeMode(h.SIMPLE_SELECT,{},{silent:!0})))},ae.toDisplayFeatures=function(t,e,n){var o=e.properties.id===t.polygon.id;if(e.properties.active=o?m.ACTIVE:m.INACTIVE,!o)return n(e);if(0!==e.geometry.coordinates.length){var r=e.geometry.coordinates[0].length;if(!(r<3)){if(e.properties.meta=v.FEATURE,n(_t(t.polygon.id,e.geometry.coordinates[0][0],\"0.0\",!1)),r>3){var i=e.geometry.coordinates[0].length-3;n(_t(t.polygon.id,e.geometry.coordinates[0][i],\"0.\"+i,!1))}if(r<=4){var a=[[e.geometry.coordinates[0][0][0],e.geometry.coordinates[0][0][1]],[e.geometry.coordinates[0][1][0],e.geometry.coordinates[0][1][1]]];if(n({type:f.FEATURE,properties:e.properties,geometry:{coordinates:a,type:f.LINE_STRING}}),3===r)return}return n(e)}}},ae.onTrash=function(t){this.deleteFeature([t.polygon.id],{silent:!0}),this.changeMode(h.SIMPLE_SELECT)};var se={onSetup:function(t){var e,n,o=(t=t||{}).featureId,r=\"forward\";if(o){if(!(e=this.getFeature(o)))throw new Error(\"Could not find a feature with the provided featureId\");var i=t.from;if(i&&\"Feature\"===i.type&&i.geometry&&\"Point\"===i.geometry.type&&(i=i.geometry),i&&\"Point\"===i.type&&i.coordinates&&2===i.coordinates.length&&(i=i.coordinates),!i||!Array.isArray(i))throw new Error(\"Please use the `from` property to indicate which point to continue the line from\");var a=e.coordinates.length-1;if(e.coordinates[a][0]===i[0]&&e.coordinates[a][1]===i[1])n=a+1,e.addCoordinate.apply(e,[n].concat(e.coordinates[a]));else{if(e.coordinates[0][0]!==i[0]||e.coordinates[0][1]!==i[1])throw new Error(\"`from` should match the point at either the start or the end of the provided LineString\");r=\"backwards\",n=0,e.addCoordinate.apply(e,[n].concat(e.coordinates[0]))}}else e=this.newFeature({type:f.FEATURE,properties:{},geometry:{type:f.LINE_STRING,coordinates:[]}}),n=0,this.addFeature(e);return this.clearSelectedFeatures(),Tt.disable(this),this.updateUIClasses({mouse:d.ADD}),this.activateUIButton(p.LINE),this.setActionableState({trash:!0}),{line:e,currentVertexPosition:n,direction:r}},clickAnywhere:function(t,e){if(t.currentVertexPosition>0&&ie(e,t.line.coordinates[t.currentVertexPosition-1])||\"backwards\"===t.direction&&ie(e,t.line.coordinates[t.currentVertexPosition+1]))return this.changeMode(h.SIMPLE_SELECT,{featureIds:[t.line.id]});this.updateUIClasses({mouse:d.ADD}),t.line.updateCoordinate(t.currentVertexPosition,e.lngLat.lng,e.lngLat.lat),\"forward\"===t.direction?(t.currentVertexPosition++,t.line.updateCoordinate(t.currentVertexPosition,e.lngLat.lng,e.lngLat.lat)):t.line.addCoordinate(0,e.lngLat.lng,e.lngLat.lat)},clickOnVertex:function(t){return this.changeMode(h.SIMPLE_SELECT,{featureIds:[t.line.id]})},onMouseMove:function(t,e){t.line.updateCoordinate(t.currentVertexPosition,e.lngLat.lng,e.lngLat.lat),lt(e)&&this.updateUIClasses({mouse:d.POINTER})}};se.onTap=se.onClick=function(t,e){if(lt(e))return this.clickOnVertex(t,e);this.clickAnywhere(t,e)},se.onKeyUp=function(t,e){ft(e)?this.changeMode(h.SIMPLE_SELECT,{featureIds:[t.line.id]}):pt(e)&&(this.deleteFeature([t.line.id],{silent:!0}),this.changeMode(h.SIMPLE_SELECT))},se.onStop=function(t){Tt.enable(this),this.activateUIButton(),void 0!==this.getFeature(t.line.id)&&(t.line.removeCoordinate(\"\"+t.currentVertexPosition),t.line.isValid()?this.map.fire(g.CREATE,{features:[t.line.toGeoJSON()]}):(this.deleteFeature([t.line.id],{silent:!0}),this.changeMode(h.SIMPLE_SELECT,{},{silent:!0})))},se.onTrash=function(t){this.deleteFeature([t.line.id],{silent:!0}),this.changeMode(h.SIMPLE_SELECT)},se.toDisplayFeatures=function(t,e,n){var o=e.properties.id===t.line.id;if(e.properties.active=o?m.ACTIVE:m.INACTIVE,!o)return n(e);e.geometry.coordinates.length<2||(e.properties.meta=v.FEATURE,n(_t(t.line.id,e.geometry.coordinates[\"forward\"===t.direction?e.geometry.coordinates.length-2:1],\"\"+(\"forward\"===t.direction?e.geometry.coordinates.length-2:1),!1)),n(e))};var ue={simple_select:te,direct_select:oe,draw_point:re,draw_polygon:ae,draw_line_string:se},ce={defaultMode:h.SIMPLE_SELECT,keybindings:!0,touchEnabled:!0,clickBuffer:2,touchBuffer:25,boxSelect:!0,displayControlsDefault:!0,styles:ot,modes:ue,controls:{},userProperties:!1},le={point:!0,line_string:!0,polygon:!0,trash:!0,combine_features:!0,uncombine_features:!0},de={point:!1,line_string:!1,polygon:!1,trash:!1,combine_features:!1,uncombine_features:!1};function pe(t,e){return t.map((function(t){return t.source?t:tt(t,{id:t.id+\".\"+e,source:\"hot\"===e?l.HOT:l.COLD})}))}var fe={exports:{}};!function(t,e){var n=\"__lodash_hash_undefined__\",o=9007199254740991,r=\"[object Arguments]\",i=\"[object Array]\",a=\"[object Boolean]\",s=\"[object Date]\",u=\"[object Error]\",c=\"[object Function]\",l=\"[object Map]\",d=\"[object Number]\",p=\"[object Object]\",f=\"[object Promise]\",h=\"[object RegExp]\",g=\"[object Set]\",y=\"[object String]\",v=\"[object Symbol]\",m=\"[object WeakMap]\",_=\"[object ArrayBuffer]\",b=\"[object DataView]\",E=/^\\[object .+?Constructor\\]$/,T=/^(?:0|[1-9]\\d*)$/,C={};C[\"[object Float32Array]\"]=C[\"[object Float64Array]\"]=C[\"[object Int8Array]\"]=C[\"[object Int16Array]\"]=C[\"[object Int32Array]\"]=C[\"[object Uint8Array]\"]=C[\"[object Uint8ClampedArray]\"]=C[\"[object Uint16Array]\"]=C[\"[object Uint32Array]\"]=!0,C[r]=C[i]=C[_]=C[a]=C[b]=C[s]=C[u]=C[c]=C[l]=C[d]=C[p]=C[h]=C[g]=C[y]=C[m]=!1;var O=\"object\"==typeof global&&global&&global.Object===Object&&global,S=\"object\"==typeof self&&self&&self.Object===Object&&self,I=O||S||Function(\"return this\")(),x=e&&!e.nodeType&&e,M=x&&t&&!t.nodeType&&t,L=M&&M.exports===x,N=L&&O.process,A=function(){try{return N&&N.binding&&N.binding(\"util\")}catch(t){}}(),P=A&&A.isTypedArray;function F(t,e){for(var n=-1,o=null==t?0:t.length;++ns))return!1;var c=i.get(t);if(c&&i.get(e))return c==e;var l=-1,d=!0,p=2&n?new _t:void 0;for(i.set(t,e),i.set(e,t);++l-1},vt.prototype.set=function(t,e){var n=this.__data__,o=Tt(n,t);return o<0?(++this.size,n.push([t,e])):n[o][1]=e,this},mt.prototype.clear=function(){this.size=0,this.__data__={hash:new yt,map:new(rt||vt),string:new yt}},mt.prototype.delete=function(t){var e=Nt(this,t).delete(t);return this.size-=e?1:0,e},mt.prototype.get=function(t){return Nt(this,t).get(t)},mt.prototype.has=function(t){return Nt(this,t).has(t)},mt.prototype.set=function(t,e){var n=Nt(this,t),o=n.size;return n.set(t,e),this.size+=n.size==o?0:1,this},_t.prototype.add=_t.prototype.push=function(t){return this.__data__.set(t,n),this},_t.prototype.has=function(t){return this.__data__.has(t)},bt.prototype.clear=function(){this.__data__=new vt,this.size=0},bt.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},bt.prototype.get=function(t){return this.__data__.get(t)},bt.prototype.has=function(t){return this.__data__.has(t)},bt.prototype.set=function(t,e){var n=this.__data__;if(n instanceof vt){var o=n.__data__;if(!rt||o.length<199)return o.push([t,e]),this.size=++n.size,this;n=this.__data__=new mt(o)}return n.set(t,e),this.size=n.size,this};var Pt=tt?function(t){return null==t?[]:(t=Object(t),function(t,e){for(var n=-1,o=null==t?0:t.length,r=0,i=[];++n-1&&t%1==0&&t-1&&t%1==0&&t<=o}function Gt(t){var e=typeof t;return null!=t&&(\"object\"==e||\"function\"==e)}function Jt(t){return null!=t&&\"object\"==typeof t}var zt=P?function(t){return function(e){return t(e)}}(P):function(t){return Jt(t)&&Bt(t.length)&&!!C[Ct(t)]};function Yt(t){return null!=(e=t)&&Bt(e.length)&&!Vt(e)?Et(t):xt(t);var e}t.exports=function(t,e){return St(t,e)}}(fe,fe.exports);var he=e(fe.exports);function ge(t,e){return t.length===e.length&&JSON.stringify(t.map((function(t){return t})).sort())===JSON.stringify(e.map((function(t){return t})).sort())}var ye={Polygon:V,LineString:j,Point:U,MultiPolygon:J,MultiLineString:J,MultiPoint:J};var ve=Object.freeze({__proto__:null,CommonSelectors:ht,constrainFeatureMovement:Kt,createMidPoint:bt,createSupplementaryPoints:Et,createVertex:_t,doubleClickZoom:Tt,euclideanDistance:A,featuresAt:M,getFeatureAtAndSetCursors:N,isClick:P,isEventAtCoordinates:ie,isTap:F,mapEventToBoundingBox:S,ModeHandler:t,moveFeatures:Qt,sortFeatures:O,stringSetsAreEqual:ge,StringSet:I,theme:ot,toDenseArray:H}),me=function(t,e){var n={options:t=function(t){void 0===t&&(t={});var e=tt(t);return t.controls||(e.controls={}),!1===t.displayControlsDefault?e.controls=tt(de,t.controls):e.controls=tt(le,t.controls),(e=tt(ce,e)).styles=pe(e.styles,\"cold\").concat(pe(e.styles,\"hot\")),e}(t)};e=function(t,e){return e.modes=h,e.getFeatureIdsAt=function(e){return M.click({point:e},null,t).map((function(t){return t.properties.id}))},e.getSelectedIds=function(){return t.store.getSelectedIds()},e.getSelected=function(){return{type:f.FEATURE_COLLECTION,features:t.store.getSelectedIds().map((function(e){return t.store.get(e)})).map((function(t){return t.toGeoJSON()}))}},e.getSelectedPoints=function(){return{type:f.FEATURE_COLLECTION,features:t.store.getSelectedCoordinates().map((function(t){return{type:f.FEATURE,properties:{},geometry:{type:f.POINT,coordinates:t.coordinates}}}))}},e.set=function(n){if(void 0===n.type||n.type!==f.FEATURE_COLLECTION||!Array.isArray(n.features))throw new Error(\"Invalid FeatureCollection\");var o=t.store.createRenderBatch(),r=t.store.getAllIds().slice(),i=e.add(n),a=new I(i);return(r=r.filter((function(t){return!a.has(t)}))).length&&e.delete(r),o(),i},e.add=function(e){var n=JSON.parse(JSON.stringify(It(e))).features.map((function(e){if(e.id=e.id||k(),null===e.geometry)throw new Error(\"Invalid geometry: null\");if(void 0===t.store.get(e.id)||t.store.get(e.id).type!==e.geometry.type){var n=ye[e.geometry.type];if(void 0===n)throw new Error(\"Invalid geometry type: \"+e.geometry.type+\".\");var o=new n(t,e);t.store.add(o)}else{var r=t.store.get(e.id);r.properties=e.properties,he(r.properties,e.properties)||t.store.featureChanged(r.id),he(r.getCoordinates(),e.geometry.coordinates)||r.incomingCoords(e.geometry.coordinates)}return e.id}));return t.store.render(),n},e.get=function(e){var n=t.store.get(e);if(n)return n.toGeoJSON()},e.getAll=function(){return{type:f.FEATURE_COLLECTION,features:t.store.getAll().map((function(t){return t.toGeoJSON()}))}},e.delete=function(n){return t.store.delete(n,{silent:!0}),e.getMode()!==h.DIRECT_SELECT||t.store.getSelectedIds().length?t.store.render():t.events.changeMode(h.SIMPLE_SELECT,void 0,{silent:!0}),e},e.deleteAll=function(){return t.store.delete(t.store.getAllIds(),{silent:!0}),e.getMode()===h.DIRECT_SELECT?t.events.changeMode(h.SIMPLE_SELECT,void 0,{silent:!0}):t.store.render(),e},e.changeMode=function(n,o){return void 0===o&&(o={}),n===h.SIMPLE_SELECT&&e.getMode()===h.SIMPLE_SELECT?(ge(o.featureIds||[],t.store.getSelectedIds())||(t.store.setSelected(o.featureIds,{silent:!0}),t.store.render()),e):(n===h.DIRECT_SELECT&&e.getMode()===h.DIRECT_SELECT&&o.featureId===t.store.getSelectedIds()[0]||t.events.changeMode(n,o,{silent:!0}),e)},e.getMode=function(){return t.events.getMode()},e.trash=function(){return t.events.trash({silent:!0}),e},e.combineFeatures=function(){return t.events.combineFeatures({silent:!0}),e},e.uncombineFeatures=function(){return t.events.uncombineFeatures({silent:!0}),e},e.setFeatureProperty=function(n,o,r){return t.store.setFeatureProperty(n,o,r),e},e}(n,e),n.api=e;var o=nt(n);return e.onAdd=o.onAdd,e.onRemove=o.onRemove,e.types=p,e.options=t,e};function _e(t){me(t,this)}return _e.modes=ue,_e.constants=E,_e.lib=ve,_e}));\n//# sourceMappingURL=mapbox-gl-draw.js.map\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('button',{staticClass:\"vst-button inline-flex justify-center items-center gap-2 rounded-md font-semibold focus:outline-none text-sm transition-all\",class:{\n ..._vm.buttonData.params,\n [_vm.size === 'mini'\n ? 'py-1 px-3'\n : _vm.size === 'large'\n ? 'py-3 px-7'\n : 'py-1.5 px-5']: true,\n [_vm.disabled\n ? 'disabled opacity-50 focus:ring-0 focus:ring-offset-0 cursor-not-allowed'\n : 'focus:ring-2 focus:ring-offset-2']: true,\n ['!px-2 !py-2 !rounded-full']: _vm.circle,\n ['!px-2 !py-2 !rounded-md']: _vm.square,\n },attrs:{\"type\":\"button\"},on:{\"click\":_vm.handleClick}},[_vm._t(\"default\"),(_vm.icon)?_c('i',{staticClass:\"pointer-events-none\",class:'ti ' + _vm.icon}):_vm._e(),(_vm.loading)?_c('div',{attrs:{\"role\":\"status\"}},[_c('svg',{staticClass:\"inline w-4 h-4 text-gray-200 animate-spin fill-blue-600\",attrs:{\"aria-hidden\":\"true\",\"viewBox\":\"0 0 100 101\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{attrs:{\"d\":\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\",\"fill\":\"currentColor\"}}),_c('path',{attrs:{\"d\":\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\",\"fill\":\"currentFill\"}})])]):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-button.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-button.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vs-button.vue?vue&type=template&id=53345ef7\"\nimport script from \"./vs-button.vue?vue&type=script&lang=js\"\nexport * from \"./vs-button.vue?vue&type=script&lang=js\"\nimport style0 from \"./vs-button.vue?vue&type=style&index=0&id=53345ef7&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"toast\",staticClass:\"vst-toast flex items-center w-full max-w-xs p-4 mb-4 text-gray-500 bg-white rounded-lg shadow\",attrs:{\"role\":\"alert\"}},[_c('div',{staticClass:\"vst-toast__icon inline-flex items-center justify-center flex-shrink-0 w-8 h-8 rounded-lg\",class:'text-' + _vm.themeColor + '-500 bg-' + _vm.themeColor + '-100'},[(_vm.type === 'success')?_c('i',{staticClass:\"ti ti-circle-check-filled\"}):(_vm.type === 'error')?_c('i',{staticClass:\"ti ti-circle-x-filled\"}):(_vm.type === 'warning')?_c('i',{staticClass:\"ti ti-alert-circle-filled\"}):_c('i',{staticClass:\"ti ti-info-circle-filled\"})]),_c('div',{staticClass:\"ml-3\"},[(_vm.title)?_c('span',{staticClass:\"mb-1 text-sm font-semibold text-gray-900\"},[_vm._v(_vm._s(_vm.title))]):_vm._e(),(!_vm.html)?_c('div',{staticClass:\"text-sm font-normal\"},[_vm._v(\" \"+_vm._s(_vm.message)+\" \")]):_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.message)}})]),_c('button',{staticClass:\"ml-auto transition-all -mx-1.5 -my-1.5 bg-white text-gray-400 hover:text-gray-900 rounded-lg focus:ring-2 focus:ring-gray-300 p-1.5 hover:bg-gray-100 inline-flex items-center justify-center h-8 w-8\",attrs:{\"type\":\"button\",\"data-dismiss-target\":\"#toast-success\",\"aria-label\":\"Close\"},on:{\"click\":function($event){return _vm.$refs.toast.parentElement.close()}}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Close\")]),_c('svg',{staticClass:\"w-3 h-3\",attrs:{\"aria-hidden\":\"true\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill\":\"none\",\"viewBox\":\"0 0 14 14\"}},[_c('path',{attrs:{\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",\"stroke-width\":\"2\",\"d\":\"m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6\"}})])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n \n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-toast.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-toast.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vs-toast.vue?vue&type=template&id=ef15ec0e\"\nimport script from \"./vs-toast.vue?vue&type=script&lang=js\"\nexport * from \"./vs-toast.vue?vue&type=script&lang=js\"\nimport style0 from \"./vs-toast.vue?vue&type=style&index=0&id=ef15ec0e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"VstCheckbox\"},[(!_vm.checkboxBody && !_vm.options.length)?[_c('div',{ref:\"checkbox\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.modelValue),expression:\"modelValue\"}],class:_vm.checkboxClasses,attrs:{\"id\":_vm.inputId,\"type\":\"checkbox\",\"disabled\":_vm.disabled},domProps:{\"value\":_vm.label,\"checked\":Array.isArray(_vm.modelValue)?_vm._i(_vm.modelValue,_vm.label)>-1:(_vm.modelValue)},on:{\"change\":[function($event){var $$a=_vm.modelValue,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.label,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.modelValue=$$a.concat([$$v]))}else{$$i>-1&&(_vm.modelValue=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.modelValue=$$c}},function($event){return _vm.$emit('change', $event.target.checked)}]}}),(_vm.label)?_c('label',{class:[\n 'vs-checkbox-label text-gray-500 font-normal mb-0 ml-3',\n { 'text-xs': _vm.size === 'xs' },\n { 'text-sm': _vm.size === 'default' },\n { 'text-md': _vm.size === 'md' },\n { 'text-lg': _vm.size === 'lg' },\n { 'text-xl': _vm.size === 'xl' },\n { 'cursor-pointer': !_vm.disabled },\n { 'cursor-not-allowed': _vm.disabled },\n ],attrs:{\"for\":_vm.inputId},on:{\"click\":function($event){$event.stopPropagation();}}},[_vm._t(\"default\",function(){return [_vm._v(_vm._s(_vm.label))]})],2):_vm._e()])]:_vm._e(),(_vm.options.length)?[_c('div',{staticClass:\"flex flex-col gap-2\"},_vm._l((_vm.options),function(option){return _c('div',{key:_vm.formatOption(option),staticClass:\"flex items-center\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedOptionsInternal),expression:\"selectedOptionsInternal\"}],class:_vm.checkboxClasses,attrs:{\"id\":_vm.inputId + '-' + _vm.formatOption(option),\"type\":\"checkbox\",\"disabled\":_vm.disabled},domProps:{\"value\":_vm.formatOption(option),\"checked\":Array.isArray(_vm.selectedOptionsInternal)?_vm._i(_vm.selectedOptionsInternal,_vm.formatOption(option))>-1:(_vm.selectedOptionsInternal)},on:{\"change\":[function($event){var $$a=_vm.selectedOptionsInternal,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.formatOption(option),$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.selectedOptionsInternal=$$a.concat([$$v]))}else{$$i>-1&&(_vm.selectedOptionsInternal=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.selectedOptionsInternal=$$c}},function($event){return _vm.toggleCheckbox($event)}],\"input\":function($event){return _vm.toggleCheckbox($event)}}}),_c('label',{staticClass:\"vs-checkbox-label text-gray-500 ml-3 font-normal mb-0\",class:[\n { 'cursor-pointer': !_vm.disabled },\n { 'cursor-not-allowed': _vm.disabled }\n ],attrs:{\"for\":_vm.inputId + '-' + _vm.formatOption(option)}},[_vm._v(\" \"+_vm._s(_vm.formatOption(option))+\" \")])])}),0)]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-form-checkbox.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-form-checkbox.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vs-form-checkbox.vue?vue&type=template&id=0f4c893e&scoped=true\"\nimport script from \"./vs-form-checkbox.vue?vue&type=script&lang=js\"\nexport * from \"./vs-form-checkbox.vue?vue&type=script&lang=js\"\nimport style0 from \"./vs-form-checkbox.vue?vue&type=style&index=0&id=0f4c893e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0f4c893e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"bg-white border rounded-md\",class:{ 'border-gray-200': !_vm.error, 'border-red-500': _vm.error }},[_c('div',{staticClass:\"w-full flex justify-between gap-x-1\"},[_c('div',{staticClass:\"grow\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.currentVal),expression:\"currentVal\"}],ref:\"inputNumber\",staticClass:\"vs-form-number w-full bg-transparent border-none text-gray-800 focus:ring-0 py-2 px-3\",class:_vm.inputClases,attrs:{\"type\":\"text\",\"disabled\":_vm.disabled},domProps:{\"value\":(_vm.currentVal)},on:{\"blur\":_vm.handleBlur,\"keydown\":_vm.handleKeyDown,\"input\":function($event){if($event.target.composing)return;_vm.currentVal=$event.target.value}}})]),_c('div',{staticClass:\"flex items-center -gap-y-px divide-x divide-gray-200 border-s border-gray-200\"},[_c('button',{staticClass:\"w-10 h-full inline-flex justify-center items-center gap-x-2 font-medium last:rounded-e-lg bg-white text-gray-800 hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none\",class:_vm.inputClases,attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.handleClick('minus')}}},[_c('svg',{staticClass:\"flex-shrink-0 w-3.5 h-3.5\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}},[_c('path',{attrs:{\"d\":\"M5 12h14\"}})])]),_c('button',{staticClass:\"w-10 h-full inline-flex justify-center items-center gap-x-2 font-medium last:rounded-e-lg bg-white text-gray-800 hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none\",class:_vm.inputClases,attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.handleClick('plus')}}},[_c('svg',{staticClass:\"flex-shrink-0 w-3.5 h-3.5\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}},[_c('path',{attrs:{\"d\":\"M5 12h14\"}}),_c('path',{attrs:{\"d\":\"M12 5v14\"}})])])])])]),(_vm.errorMessage)?_c('p',{staticClass:\"text-sm text-red-600 mt-2\"},[_vm._v(\" \"+_vm._s(_vm.errorMessage)+\" \")]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\r\n * decimal.js v10.4.3\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licence\r\n */\r\n\r\n\r\n// ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\nvar EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n// ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n inexact, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n tag = '[object Decimal]',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { toStringTag: tag };\r\n\r\n\r\n// Decimal prototype methods\r\n\r\n\r\n/*\r\n * absoluteValue abs\r\n * ceil\r\n * clampedTo clamp\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\nP.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\nP.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal clamped to the range\r\n * delineated by `min` and `max`.\r\n *\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\nP.clampedTo = P.clamp = function (min, max) {\r\n var k,\r\n x = this,\r\n Ctor = x.constructor;\r\n min = new Ctor(min);\r\n max = new Ctor(max);\r\n if (!min.s || !max.s) return new Ctor(NaN);\r\n if (min.gt(max)) throw Error(invalidArgument + max);\r\n k = x.cmp(min);\r\n return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);\r\n};\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\nP.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or ±Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\nP.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\nP.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * mathpow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = mathpow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\nP.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\nP.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\nP.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\nP.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\nP.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\nP.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\nP.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\nP.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\nP.inverseCosine = P.acos = function () {\r\n var halfPi,\r\n x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.asin();\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return halfPi.minus(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\nP.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\nP.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\nP.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\nP.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\nP.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\nP.isFinite = function () {\r\n return !!this.d;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\nP.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\nP.isNaN = function () {\r\n return !this.s;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\nP.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\nP.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\nP.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nP.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'lt');\r\n};\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'gt');\r\n};\r\n */\r\n\r\n\r\n/*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is ±Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with different signs.\r\n // Return NaN if both are ±Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\nP.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is ±Infinity or x is ±0.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\nP.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with the same sign.\r\n // Return NaN if both are ±Infinity with different signs.\r\n // Return y if x is finite and y is ±Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\nP.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\nP.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\nP.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\nP.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\nP.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, ±Infinity or ±0...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity.\r\n ? NaN\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n // Return ±0 if either is ±0.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\nP.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\nP.toNumber = function () {\r\n return +this;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, ±0) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, ±Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\nP.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either ±Infinity, NaN or ±0?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\nP.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\nP.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\nP.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n};\r\n\r\n\r\n// Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n/*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\nfunction digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n}\r\n\r\n\r\nfunction checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\nfunction checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n// Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n// Eg. convertBase('255', 10, 16) returns [15, 15].\r\n// Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\nfunction convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n}\r\n\r\n\r\n/*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction cosine(Ctor, x) {\r\n var k, len, y;\r\n\r\n if (x.isZero()) return x;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n len = x.d.length;\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Perform division in the specified base.\r\n */\r\nvar divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n})();\r\n\r\n\r\n/*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\nfunction finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// Calculate the base 10 exponent from the base 1e7 exponent.\r\nfunction getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n}\r\n\r\n\r\nfunction getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n}\r\n\r\n\r\nfunction getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n}\r\n\r\n\r\nfunction getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n\r\nfunction getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\nfunction intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n}\r\n\r\n\r\nfunction isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n}\r\n\r\n\r\n/*\r\n * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'.\r\n */\r\nfunction maxOrMin(Ctor, args, ltgt) {\r\n var y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n } else if (x[ltgt](y)) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(±0) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\nfunction naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\nfunction naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n}\r\n\r\n\r\n// ±Infinity, NaN.\r\nfunction nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\nfunction parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\nfunction parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str.indexOf('_') > -1) {\r\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\r\n if (isDecimal.test(str)) return parseDecimal(x, str);\r\n } else if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);\r\n }\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n// Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\nfunction taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n}\r\n\r\n\r\n// Exponent e must be positive and non-zero.\r\nfunction tinyPow(b, e) {\r\n var n = b;\r\n while (--e) n *= b;\r\n return n;\r\n}\r\n\r\n\r\n// Return the absolute value of `x` reduced to less than or equal to half pi.\r\nfunction toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\nfunction toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n}\r\n\r\n\r\n// Does not strip trailing zeros.\r\nfunction truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n}\r\n\r\n\r\n// Decimal methods\r\n\r\n\r\n/*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clamp\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * sum\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction abs(x) {\r\n return new this(x).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction acos(x) {\r\n return new this(x).acos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction acosh(x) {\r\n return new this(x).acosh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction add(x, y) {\r\n return new this(x).plus(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction asin(x) {\r\n return new this(x).asin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction asinh(x) {\r\n return new this(x).asinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction atan(x) {\r\n return new this(x).atan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction atanh(x) {\r\n return new this(x).atanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|Decimal} The y-coordinate.\r\n * x {number|string|Decimal} The x-coordinate.\r\n *\r\n * atan2(±0, -0) = ±pi\r\n * atan2(±0, +0) = ±0\r\n * atan2(±0, -x) = ±pi for x > 0\r\n * atan2(±0, x) = ±0 for x > 0\r\n * atan2(-y, ±0) = -pi/2 for y > 0\r\n * atan2(y, ±0) = pi/2 for y > 0\r\n * atan2(±y, -Infinity) = ±pi for finite y > 0\r\n * atan2(±y, +Infinity) = ±0 for finite y > 0\r\n * atan2(±Infinity, x) = ±pi/2 for finite x\r\n * atan2(±Infinity, -Infinity) = ±3*pi/4\r\n * atan2(±Infinity, +Infinity) = ±pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\nfunction atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both ±Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is ±Infinity or y is ±0\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is ±Infinity or x is ±0\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction cbrt(x) {\r\n return new this(x).cbrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.\r\n *\r\n * x {number|string|Decimal}\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\nfunction clamp(x, min, max) {\r\n return new this(x).clamp(min, max);\r\n}\r\n\r\n\r\n/*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\nfunction config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cos(x) {\r\n return new this(x).cos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cosh(x) {\r\n return new this(x).cosh();\r\n}\r\n\r\n\r\n/*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\nfunction clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (isDecimalInstance(v)) {\r\n x.s = v.s;\r\n\r\n if (external) {\r\n if (!v.d || v.e > Decimal.maxE) {\r\n\r\n // Infinity.\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (v.e < Decimal.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d.slice();\r\n }\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d ? v.d.slice() : v.d;\r\n }\r\n\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n\r\n if (external) {\r\n if (e > Decimal.maxE) {\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (e < Decimal.minE) {\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n\r\n return;\r\n\r\n // Infinity, NaN.\r\n } else if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n\r\n } else if (t !== 'string') {\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n // Minus sign?\r\n if ((i = v.charCodeAt(0)) === 45) {\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n // Plus sign?\r\n if (i === 43) v = v.slice(1);\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.clamp = clamp;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.sum = sum;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction div(x, y) {\r\n return new this(x).div(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\nfunction exp(x) {\r\n return new this(x).exp();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\nfunction isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.toStringTag === tag || false;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction ln(x) {\r\n return new this(x).ln();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|Decimal} The argument of the logarithm.\r\n * y {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nfunction log(x, y) {\r\n return new this(x).log(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction log2(x) {\r\n return new this(x).log(2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction log10(x) {\r\n return new this(x).log(10);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction max() {\r\n return maxOrMin(this, arguments, 'lt');\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction min() {\r\n return maxOrMin(this, arguments, 'gt');\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction mod(x, y) {\r\n return new this(x).mod(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction mul(x, y) {\r\n return new this(x).mul(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The base.\r\n * y {number|string|Decimal} The exponent.\r\n *\r\n */\r\nfunction pow(x, y) {\r\n return new this(x).pow(y);\r\n}\r\n\r\n\r\n/*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\nfunction random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sin(x) {\r\n return new this(x).sin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sinh(x) {\r\n return new this(x).sinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction sqrt(x) {\r\n return new this(x).sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction sub(x, y) {\r\n return new this(x).sub(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of the arguments, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * Only the result is rounded, not the intermediate calculations.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction sum() {\r\n var i = 0,\r\n args = arguments,\r\n x = new this(args[i]);\r\n\r\n external = false;\r\n for (; x.s && ++i < args.length;) x = x.plus(args[i]);\r\n external = true;\r\n\r\n return finalise(x, this.precision, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tan(x) {\r\n return new this(x).tan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tanh(x) {\r\n return new this(x).tanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n}\r\n\r\n\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toString;\r\nP[Symbol.toStringTag] = 'Decimal';\r\n\r\n// Create and configure initial Decimal constructor.\r\nexport var Decimal = P.constructor = clone(DEFAULTS);\r\n\r\n// Create the internal constants from their string values.\r\nLN10 = new Decimal(LN10);\r\nPI = new Decimal(PI);\r\n\r\nexport default Decimal;\r\n","\n\n\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-form-number.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-form-number.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vs-form-number.vue?vue&type=template&id=43a8f6f2&lang=true\"\nimport script from \"./vs-form-number.vue?vue&type=script&lang=js\"\nexport * from \"./vs-form-number.vue?vue&type=script&lang=js\"\nimport style0 from \"./vs-form-number.vue?vue&type=style&index=0&id=43a8f6f2&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.options.length)?[(_vm.inputStyle === 'borderless')?_c('fieldset',{staticClass:\"vs-form-checkbox\",class:[_vm.orientation === 'vertical' ? 'flex-col' : 'flex-row', 'flex gap-1'],attrs:{\"id\":_vm.id}},_vm._l((_vm.options),function(option){return _c('div',{key:option,staticClass:\"flex items-center p-1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.vModel),expression:\"vModel\"}],staticClass:\"vst-radio__input transition-all shrink-0 !m-0 mt-0.5 border-gray-200 rounded-full\",class:[`text-${_vm.color}-600`],attrs:{\"id\":_vm.getOptionLabel(option) + _vm.id,\"name\":_vm.id,\"disabled\":_vm.disabled,\"type\":\"radio\"},domProps:{\"value\":option?.id || _vm.getOptionLabel(option),\"checked\":_vm._q(_vm.vModel,option?.id || _vm.getOptionLabel(option))},on:{\"input\":function($event){return _vm.selectValue(option)},\"change\":function($event){_vm.vModel=option?.id || _vm.getOptionLabel(option)}}}),_c('label',{staticClass:\"transition-all text-gray-500 ml-2 mb-0 font-normal\",class:{\n 'text-xs': _vm.size === 'mini',\n 'text-sm': _vm.size === 'default',\n 'text-lg': _vm.size === 'large',\n 'cursor-not-allowed opacity-50': _vm.disabled,\n 'cursor-pointer': !_vm.disabled,\n },attrs:{\"for\":_vm.getOptionLabel(option) + _vm.id}},[_vm._v(_vm._s(_vm.getOptionLabel(option)))])])}),0):_c('div',{class:[_vm.orientation === 'vertical' ? 'flex-col' : 'flex-row', 'flex gap-1'],attrs:{\"id\":_vm.id}},_vm._l((_vm.options),function(option){return _c('div',{key:option,staticClass:\"flex items-center p-1\"},[_c('label',{staticClass:\"max-w-xs flex p-3 block w-full bg-white border border-gray-200 rounded-lg text-sm focus:border-blue-500 focus:ring-blue-500\",class:{\n 'cursor-not-allowed opacity-50': _vm.disabled,\n 'cursor-pointer': !_vm.disabled,\n }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.vModel),expression:\"vModel\"}],staticClass:\"vst-radio__input transition-all shrink-0 !m-0 mt-0.5 border-gray-200 rounded-full\",class:[`text-${_vm.color}-600`],attrs:{\"name\":_vm.id,\"disabled\":_vm.disabled,\"type\":\"radio\"},domProps:{\"value\":option?.id || _vm.getOptionLabel(option),\"checked\":_vm._q(_vm.vModel,option?.id || _vm.getOptionLabel(option))},on:{\"input\":function($event){return _vm.selectValue(option)},\"change\":function($event){_vm.vModel=option?.id || _vm.getOptionLabel(option)}}}),_c('span',{staticClass:\"text-sm text-gray-500 ml-2\"},[_vm._v(_vm._s(_vm.getOptionLabel(option)))])])])}),0)]:_c('div',{staticClass:\"flex\"},[_c('label',{staticClass:\"max-w-xs flex block w-full items-center\",class:{\n 'cursor-not-allowed opacity-50': _vm.disabled,\n 'cursor-pointer': !_vm.disabled,\n }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.modelValue),expression:\"modelValue\"}],staticClass:\"vst-radio__input transition-all shrink-0 !m-0 mt-0.5 border-gray-200 rounded-full\",class:[`text-${_vm.color}-600`],attrs:{\"name\":_vm.data,\"disabled\":_vm.disabled,\"type\":\"radio\"},domProps:{\"value\":_vm.label,\"checked\":_vm._q(_vm.modelValue,_vm.label)},on:{\"input\":function($event){return _vm.$emit('input', _vm.value)},\"change\":function($event){_vm.modelValue=_vm.label}}}),_c('span',{staticClass:\"text-sm text-gray-500 ml-2\"},[_vm._t(\"default\",function(){return [_vm._v(_vm._s(_vm.label))]})],2)])])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-form-radio.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-form-radio.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vs-form-radio.vue?vue&type=template&id=64a35a15&scoped=true\"\nimport script from \"./vs-form-radio.vue?vue&type=script&lang=js\"\nexport * from \"./vs-form-radio.vue?vue&type=script&lang=js\"\nimport style0 from \"./vs-form-radio.vue?vue&type=style&index=0&id=64a35a15&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"64a35a15\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('button',{staticClass:\"w-full text-start vs-form-select relative text-sm\",on:{\"mouseenter\":function($event){_vm.canClose = true},\"mouseleave\":function($event){_vm.canClose = false},\"click\":_vm.toggleDropdown}},[_c('div',{ref:\"select\",staticClass:\"h-full\"},[_c('button',{ref:\"button\",class:_vm.selectClasses,attrs:{\"readonly\":\"\",\"disabled\":_vm.disabled},on:{\"keydown\":_vm.handleKeyDown}},[(!_vm.multiple)?_c('span',[_vm._v(_vm._s(_vm.formatTitle(_vm.selectedLabel) || _vm.placeholder))]):_vm._e(),(_vm.multiple)?_c('div',{staticClass:\"flex flex-wrap gap-1 overflow-y-auto h-full\"},[(!_vm.selectedValues?.length)?_c('span',{staticClass:\"text-gray-400\",staticStyle:{\"margin-right\":\"30px\"}},[_vm._v(\" \"+_vm._s(_vm.placeholder)+\" \")]):_c('span',[_vm._v(\" Обрано значень: \"+_vm._s(_vm.selectedValues.length)+\" \")])]):_vm._e()]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isDropdownOpen),expression:\"isDropdownOpen\"}],ref:\"list\",staticClass:\"vs-select__options mt-2 z-50 w-full max-h-[300px] p-1 space-y-0.5 bg-white border border-gray-200 rounded-md overflow-hidden overflow-y-auto top-full\"},[(_vm.localOptions?.length >= 10)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.query),expression:\"query\"}],ref:\"searchInput\",staticClass:\"vstSelect-input-inner text-left bg-white border border-gray-200 text-gray-900 rounded-md focus:ring-blue-500 focus:border-blue-500 block py-2 px-3\",class:`text-${this.size}`,attrs:{\"placeholder\":\"Пошук...\"},domProps:{\"value\":(_vm.query)},on:{\"keydown\":_vm.handleKeyDown,\"click\":function($event){$event.stopPropagation();},\"input\":function($event){if($event.target.composing)return;_vm.query=$event.target.value}}}):_vm._e(),(_vm.query.length)?[(_vm.filteredOptions.length)?_c('ul',{ref:\"optionsList\"},_vm._l((_vm.filteredOptions),function(option){return _c('li',{key:_vm.formatTitle(option),staticClass:\"vs-select__options-item cursor-pointer py-2 px-4 w-full text-sm text-gray-800 hover:bg-gray-100 rounded-md focus:outline-none focus:bg-gray-100\",on:{\"click\":function($event){$event.stopPropagation();_vm.multiple ? _vm.selectOptions(option) : _vm.selectOption(option)}}},[_c('div',{staticClass:\"flex justify-between items-center w-full\"},[_vm._v(\" \"+_vm._s(_vm.formatTitle(option))+\" \"),(_vm.isOptionSelected(option))?_c('svg',{staticClass:\"flex-shrink-0 w-3.5 h-3.5 text-blue-600\",attrs:{\"xmlns\":\"http:.w3.org/2000/svg\",\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}},[_c('polyline',{attrs:{\"points\":\"20 6 9 17 4 12\"}})]):_vm._e()])])}),0):_c('div',{staticClass:\"px-4 text-sm text-gray py-2\"},[_vm._v(\"Співпадінь не знайдено\")])]:(_vm.localOptions?.length)?_c('ul',{ref:\"optionsList\"},_vm._l((_vm.localOptions),function(option){return _c('li',{key:_vm.formatTitle(option),staticClass:\"vs-select__options-item cursor-pointer py-2 px-4 w-full text-sm text-gray-800 hover:bg-gray-100 rounded-md focus:outline-none focus:bg-gray-100\",class:{ 'bg-gray-100': JSON.stringify(option) === JSON.stringify(_vm.highlightedOption) },on:{\"click\":function($event){$event.stopPropagation();_vm.multiple ? _vm.selectOptions(option) : _vm.selectOption(option)}}},[_c('div',{staticClass:\"flex justify-between items-center w-full\"},[_c('div',{staticClass:\"flex items-center\"},[(option.color)?_c('span',{staticClass:\"vs-select-color\",style:({ backgroundColor: option.color })}):_vm._e(),_c('span',[_vm._v(_vm._s(_vm.formatTitle(option)))])]),(_vm.isOptionSelected(option))?_c('svg',{staticClass:\"flex-shrink-0 w-3.5 h-3.5 text-blue-600\",attrs:{\"xmlns\":\"http:.w3.org/2000/svg\",\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}},[_c('polyline',{attrs:{\"points\":\"20 6 9 17 4 12\"}})]):_vm._e()])])}),0):_c('div',{staticClass:\"px-4 text-sm text-gray py-2\"},[_vm._v(\"Немає даних\")])],2)]),_c('i',{staticClass:\"vs-select__arrow ti ti-chevron-down shrink-0 text-gray-500\",class:{ active: _vm.isDropdownOpen }}),((_vm.clearable && _vm.selectedLabel) || (_vm.clearable && _vm.selectedValues.length))?_c('i',{ref:\"clearBtn\",staticClass:\"vs-select__clear ti ti-x shrink-0 text-gray-500\",on:{\"click\":function($event){$event.stopPropagation();return _vm.clearSelect.apply(null, arguments)}}}):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-form-select.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-form-select.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vs-form-select.vue?vue&type=template&id=2bd47cd2&scoped=true\"\nimport script from \"./vs-form-select.vue?vue&type=script&lang=js\"\nexport * from \"./vs-form-select.vue?vue&type=script&lang=js\"\nimport style0 from \"./vs-form-select.vue?vue&type=style&index=0&id=2bd47cd2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2bd47cd2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(this.multiple || this.multi)?_c('div',{staticClass:\"relative flex flex-col gap-2\"},_vm._l((_vm.value),function(item,index){return _c('div',{key:index,staticClass:\"flex gap-2\"},[(_vm.prefix)?_c('div',{ref:\"inputPrefix\",refInFor:true,staticClass:\"absolute inset-y-0 flex items-center pointer-events-none left-0 pl-3.5\"},[_c('span',[_vm._v(_vm._s(_vm.prefix))])]):_vm._e(),_c('div',{staticClass:\"relative w-full\"},[(_vm.icon || _vm.inputType !== 'text')?_c('div',{staticClass:\"absolute inset-y-0 flex items-center pr-3.5 pointer-events-none left-0 pl-3.5\"},[_c('i',{class:_vm.getIconType()})]):_vm._e(),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.value[index]),expression:\"value[index]\"}],ref:\"inputRef\",refInFor:true,class:_vm.inputClasses,attrs:{\"type\":\"text\",\"minlength\":_vm.min,\"maxlength\":_vm.max,\"placeholder\":_vm.computedPlaceholder,\"readonly\":_vm.readonly,\"data-key\":index,\"disabled\":_vm.disabled},domProps:{\"value\":(_vm.value[index])},on:{\"change\":function($event){return _vm.$emit('change', $event.target.value)},\"input\":[function($event){if($event.target.composing)return;_vm.$set(_vm.value, index, $event.target.value)},_vm.handleChange],\"focus\":function($event){return _vm.$emit('focus')},\"blur\":function($event){return _vm.$emit('blur')}}}),(_vm.errorMessage)?_c('p',{staticClass:\"text-sm text-red-600 mt-2\"},[_vm._v(_vm._s(_vm.errorMessage))]):_vm._e(),(_vm.clearable && _vm.value[index])?_c('div',{staticClass:\"absolute right-0 flex items-center pr-3.5 inset-y-0\"},[_c('div',{staticClass:\"bg-white text-color-gray-50\",on:{\"click\":function($event){return _vm.clearInput(index)}}},[_c('i',{staticClass:\"ti ti-x\"})])]):_vm._e(),(_vm.loading)?_c('div',{staticClass:\"absolute inset-y-0 right-0 flex items-center pr-3.5 z-10\"},[_c('div',{attrs:{\"role\":\"status\"}},[_c('svg',{staticClass:\"inline w-4 h-4 text-gray-200 animate-spin fill-blue-600\",attrs:{\"aria-hidden\":\"true\",\"viewBox\":\"0 0 100 101\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{attrs:{\"d\":\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\",\"fill\":\"currentColor\"}}),_c('path',{attrs:{\"d\":\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\",\"fill\":\"currentFill\"}})])])]):_vm._e()]),_c('button',{on:{\"click\":function($event){return _vm.deleteValue(index)}}},[_c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"width\":\"20px\",\"height\":\"20px\"}},[_c('path',{attrs:{\"d\":\"M 10 2 L 9 3 L 4 3 L 4 5 L 5 5 L 5 20 C 5 20.522222 5.1913289 21.05461 5.5683594 21.431641 C 5.9453899 21.808671 6.4777778 22 7 22 L 17 22 C 17.522222 22 18.05461 21.808671 18.431641 21.431641 C 18.808671 21.05461 19 20.522222 19 20 L 19 5 L 20 5 L 20 3 L 15 3 L 14 2 L 10 2 z M 7 5 L 17 5 L 17 20 L 7 20 L 7 5 z M 9 7 L 9 18 L 11 18 L 11 7 L 9 7 z M 13 7 L 13 18 L 15 18 L 15 7 L 13 7 z\"}})])])])}),0):_c('div',[_c('div',{staticClass:\"relative w-full\"},[(_vm.prefix)?_c('div',{ref:\"inputPrefix\",staticClass:\"absolute inset-y-0 flex items-center pointer-events-none left-0 pl-3.5\",staticStyle:{\"z-index\":\"1\"}},[_c('span',[_vm._v(_vm._s(_vm.prefix))])]):_vm._e(),(_vm.icon || _vm.inputType !== 'text')?_c('div',{staticClass:\"absolute inset-y-0 flex items-center pr-3.5 pointer-events-none left-0 pl-3.5\",staticStyle:{\"z-index\":\"1\"}},[_c('i',{class:_vm.getIconType()})]):_vm._e(),((_vm.inputType !== 'address' ? _vm.inputType : 'text')==='checkbox')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.modelValue),expression:\"modelValue\"}],ref:\"inputRef\",class:_vm.inputClasses,style:({\n paddingLeft: _vm.prefixWidth > 0 ? _vm.prefixWidth + 5 + 'px' : null,\n paddingRight: _vm.sufixWidth > 0 ? _vm.sufixWidth + 5 + 'px' : null,\n }),attrs:{\"minlength\":_vm.min,\"maxlength\":_vm.max,\"placeholder\":_vm.computedPlaceholder,\"readonly\":_vm.readonly,\"disabled\":_vm.disabled,\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.modelValue)?_vm._i(_vm.modelValue,null)>-1:(_vm.modelValue)},on:{\"change\":[function($event){var $$a=_vm.modelValue,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.modelValue=$$a.concat([$$v]))}else{$$i>-1&&(_vm.modelValue=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.modelValue=$$c}},function($event){return _vm.$emit('change', $event.target.value)}],\"focus\":function($event){return _vm.$emit('focus')},\"blur\":function($event){return _vm.$emit('blur')},\"keyup\":function($event){return _vm.$emit('keyup', $event)}}}):((_vm.inputType !== 'address' ? _vm.inputType : 'text')==='radio')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.modelValue),expression:\"modelValue\"}],ref:\"inputRef\",class:_vm.inputClasses,style:({\n paddingLeft: _vm.prefixWidth > 0 ? _vm.prefixWidth + 5 + 'px' : null,\n paddingRight: _vm.sufixWidth > 0 ? _vm.sufixWidth + 5 + 'px' : null,\n }),attrs:{\"minlength\":_vm.min,\"maxlength\":_vm.max,\"placeholder\":_vm.computedPlaceholder,\"readonly\":_vm.readonly,\"disabled\":_vm.disabled,\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.modelValue,null)},on:{\"change\":[function($event){_vm.modelValue=null},function($event){return _vm.$emit('change', $event.target.value)}],\"focus\":function($event){return _vm.$emit('focus')},\"blur\":function($event){return _vm.$emit('blur')},\"keyup\":function($event){return _vm.$emit('keyup', $event)}}}):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.modelValue),expression:\"modelValue\"}],ref:\"inputRef\",class:_vm.inputClasses,style:({\n paddingLeft: _vm.prefixWidth > 0 ? _vm.prefixWidth + 5 + 'px' : null,\n paddingRight: _vm.sufixWidth > 0 ? _vm.sufixWidth + 5 + 'px' : null,\n }),attrs:{\"minlength\":_vm.min,\"maxlength\":_vm.max,\"placeholder\":_vm.computedPlaceholder,\"readonly\":_vm.readonly,\"disabled\":_vm.disabled,\"type\":_vm.inputType !== 'address' ? _vm.inputType : 'text'},domProps:{\"value\":(_vm.modelValue)},on:{\"change\":function($event){return _vm.$emit('change', $event.target.value)},\"focus\":function($event){return _vm.$emit('focus')},\"blur\":function($event){return _vm.$emit('blur')},\"keyup\":function($event){return _vm.$emit('keyup', $event)},\"input\":function($event){if($event.target.composing)return;_vm.modelValue=$event.target.value}}}),(_vm.errorMessage)?_c('p',{staticClass:\"text-sm text-red-600 mt-2\"},[_vm._v(_vm._s(_vm.errorMessage))]):_vm._e(),(_vm.iconRight)?_c('div',{staticClass:\"absolute inset-y-0 flex items-center pr-3.5 pointer-events-none right-0 pl-3.5\",staticStyle:{\"z-index\":\"1\"}},[_c('i',{class:_vm.iconRight})]):_vm._e(),(_vm.sufix)?_c('div',{ref:\"inputSufix\",staticClass:\"absolute inset-y-0 flex items-center pr-3.5 pointer-events-none right-0 pl-3.5\",staticStyle:{\"z-index\":\"1\"}},[_c('span',[_vm._v(_vm._s(_vm.sufix))])]):_vm._e(),(_vm.clearable && _vm.value)?_c('div',{staticClass:\"absolute right-0 flex items-center pr-3.5 inset-y-0\"},[_c('div',{staticClass:\"text-color-gray-50 cursor-pointer text-sm\",on:{\"click\":function($event){return _vm.clearInput()}}},[_c('i',{staticClass:\"ti ti-x\"})])]):_vm._e(),(_vm.loading)?_c('div',{staticClass:\"absolute inset-y-0 right-0 flex items-center pr-3.5 z-10\"},[_c('div',{attrs:{\"role\":\"status\"}},[_c('svg',{staticClass:\"inline w-4 h-4 text-gray-200 animate-spin fill-blue-600\",attrs:{\"aria-hidden\":\"true\",\"viewBox\":\"0 0 100 101\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{attrs:{\"d\":\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\",\"fill\":\"currentColor\"}}),_c('path',{attrs:{\"d\":\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\",\"fill\":\"currentFill\"}})])])]):_vm._e()])]),(this.multiple || this.multi)?_c('div',{staticClass:\"mt-3\"},[_c('div',{staticClass:\"inline-flex items-center gap-x-1.5 text-sm text-blue-600 decoration-2 hover:underline font-medium cursor-pointer\",on:{\"click\":function($event){return _vm.addField()}}},[_c('svg',{staticClass:\"w-3.5 h-3.5\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"16\",\"height\":\"16\",\"fill\":\"currentColor\",\"viewBox\":\"0 0 16 16\"}},[_c('path',{attrs:{\"d\":\"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\"}}),_c('path',{attrs:{\"d\":\"M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z\"}})]),_vm._v(\" Додати поле \")])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/** Checks if value is object */\nfunction isObject(obj) {\n return typeof obj === 'object' && obj != null && obj?.constructor?.name === 'Object';\n}\nfunction pick(obj, keys) {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return Object.entries(obj).reduce((acc, _ref) => {\n let [k, v] = _ref;\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {});\n}\n\n/** Direction */\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n\n/** Direction */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n const arrA = Array.isArray(a),\n arrB = Array.isArray(b);\n let i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n const regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n const keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, isObject, isString, objectIncludes, pick };\n","import { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(opts) {\n Object.assign(this, opts);\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n\n // double check right part\n while (this.value.slice(this.cursorPos) !== this.oldValue.slice(this.oldSelection.end)) {\n if (this.value.length - this.cursorPos < this.oldValue.length - this.oldSelection.end) ++this.oldSelection.end;else ++this.cursorPos;\n }\n }\n\n /** Start changing position */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /** Removed symbols */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","/** Applies mask on element */\nfunction IMask(el, opts) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import { isString, isObject, pick } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n// export function maskedClass(mask: string): typeof MaskedPattern;\n// export function maskedClass(mask: DateConstructor): typeof MaskedDate;\n// export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\n// export function maskedClass(mask: Array | ArrayConstructor): typeof MaskedDynamic;\n// export function maskedClass(mask: MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass(mask: Masked): typeof Masked;\n// export function maskedClass(mask: typeof Masked): typeof Masked;\n// export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass (mask: Mask): Mask;\n// export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n\n/** Get Masked class by mask type */\nfunction maskedClass(mask) /* TODO */{\n if (mask == null) throw new Error('mask property should be defined');\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n if (isString(mask)) return IMask.MaskedPattern;\n if (mask === Date) return IMask.MaskedDate;\n if (mask === Number) return IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n}\nfunction normalizeOpts(opts) {\n if (!opts) throw new Error('Options in not defined');\n if (IMask.Masked) {\n if (opts.prototype instanceof IMask.Masked) return {\n mask: opts\n };\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const {\n mask = undefined,\n ...instanceOpts\n } = opts instanceof IMask.Masked ? {\n mask: opts\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\n if (mask) {\n const _mask = mask.mask;\n return {\n ...pick(mask, (_, k) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts\n };\n }\n }\n if (!isObject(opts)) return {\n mask: opts\n };\n return {\n ...opts\n };\n}\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n\n// From masked\n// export default function createMask (opts: Opts): ReturnMasked;\n// // From masked class\n// export default function createMask, ReturnMasked extends Masked=InstanceType> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedDate=MaskedDate> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedNumber=MaskedNumber> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedEnum=MaskedEnum> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedRange=MaskedRange> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedRegExp=MaskedRegExp> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedFunction=MaskedFunction> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedPattern=MaskedPattern> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedDynamic=MaskedDynamic> (opts: Opts): ReturnMasked;\n// // From mask opts\n// export default function createMask, ReturnMasked=Opts extends MaskedOptions ? M : never> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedRegExp=MaskedRegExp> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedFunction=MaskedFunction> (opts: Opts): ReturnMasked;\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n const nOpts = normalizeOpts(opts);\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error(`Masked class is not found for provided mask ${nOpts.mask}, appropriate module needs to be imported manually before creating mask.`);\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if (nOpts._mask) {\n nOpts.mask = nOpts._mask;\n delete nOpts._mask;\n }\n return new MaskedClass(nOpts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass, normalizeOpts };\n","import IMask from '../core/holder.js';\n\n/** Generic element API to use with mask */\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive() {\n return false;\n }\n /** */\n\n /** */\n\n /** */\n}\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\nconst KEY_Z = 90;\nconst KEY_Y = 89;\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._onKeydown = this._onKeydown.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onBeforeinput = this._onBeforeinput.bind(this);\n this._onCompositionEnd = this._onCompositionEnd.bind(this);\n }\n get rootElement() {\n return this.input.getRootNode?.() ?? document;\n }\n\n /** Is element in focus */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /** Binds HTMLElement events to mask internal events */\n bindEvents(handlers) {\n this.input.addEventListener('keydown', this._onKeydown);\n this.input.addEventListener('input', this._onInput);\n this.input.addEventListener('beforeinput', this._onBeforeinput);\n this.input.addEventListener('compositionend', this._onCompositionEnd);\n this.input.addEventListener('drop', handlers.drop);\n this.input.addEventListener('click', handlers.click);\n this.input.addEventListener('focus', handlers.focus);\n this.input.addEventListener('blur', handlers.commit);\n this._handlers = handlers;\n }\n _onKeydown(e) {\n if (this._handlers.redo && (e.keyCode === KEY_Z && e.shiftKey && (e.metaKey || e.ctrlKey) || e.keyCode === KEY_Y && e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n if (this._handlers.undo && e.keyCode === KEY_Z && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (!e.isComposing) this._handlers.selectionChange(e);\n }\n _onBeforeinput(e) {\n if (e.inputType === 'historyUndo' && this._handlers.undo) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (e.inputType === 'historyRedo' && this._handlers.redo) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n }\n _onCompositionEnd(e) {\n this._handlers.input(e);\n }\n _onInput(e) {\n if (!e.isComposing) this._handlers.input(e);\n }\n\n /** Unbinds HTMLElement events to mask internal events */\n unbindEvents() {\n this.input.removeEventListener('keydown', this._onKeydown);\n this.input.removeEventListener('input', this._onInput);\n this.input.removeEventListener('beforeinput', this._onBeforeinput);\n this.input.removeEventListener('compositionend', this._onCompositionEnd);\n this.input.removeEventListener('drop', this._handlers.drop);\n this.input.removeEventListener('click', this._handlers.click);\n this.input.removeEventListener('focus', this._handlers.focus);\n this.input.removeEventListener('blur', this._handlers.commit);\n this._handlers = {};\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\n/** Bridge between InputElement and {@link Masked} */\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLInputMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","class InputHistory {\n static MAX_LENGTH = 100;\n states = [];\n currentIndex = 0;\n get currentState() {\n return this.states[this.currentIndex];\n }\n get isEmpty() {\n return this.states.length === 0;\n }\n push(state) {\n // if current index points before the last element then remove the future\n if (this.currentIndex < this.states.length - 1) this.states.length = this.currentIndex + 1;\n this.states.push(state);\n if (this.states.length > InputHistory.MAX_LENGTH) this.states.shift();\n this.currentIndex = this.states.length - 1;\n }\n go(steps) {\n this.currentIndex = Math.min(Math.max(this.currentIndex + steps, 0), this.states.length - 1);\n return this.currentState;\n }\n undo() {\n return this.go(-1);\n }\n redo() {\n return this.go(+1);\n }\n clear() {\n this.states.length = 0;\n this.currentIndex = 0;\n }\n}\n\nexport { InputHistory as default };\n","import { DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLInputMaskElement from './html-input-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport InputHistory from './input-history.js';\nimport './html-mask-element.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._rawInputValue = '';\n this.history = new InputHistory();\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onUndo = this._onUndo.bind(this);\n this._onRedo = this._onRedo.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n return mask == null || this.masked?.maskEquals(mask);\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl('auto');\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl('auto');\n }\n\n /** Raw input value */\n get rawInputValue() {\n return this._rawInputValue;\n }\n set rawInputValue(str) {\n if (this.rawInputValue === str) return;\n this.masked.rawInputValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl('auto');\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange,\n undo: this._onUndo,\n redo: this._onRedo\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl(cursorPos) {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newRawInputValue = this.masked.rawInputValue;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue || this._rawInputValue !== newRawInputValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n this._rawInputValue = newRawInputValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (cursorPos === 'auto') this.alignCursor();else if (cursorPos != null) this.cursorPos = cursorPos;\n if (isChanged) this._fireChangeEvents();\n if (!this._historyChanging && (isChanged || this.history.isEmpty)) this.history.push({\n unmaskedValue: newUnmaskedValue,\n selection: {\n start: this.selectionStart,\n end: this.cursorPos\n }\n });\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts; // TODO types, yes, mask is optional\n\n const updateMask = !this.maskEquals(mask);\n const updateOpts = this.masked.optionsIsChanged(restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) {\n this.updateValue();\n }\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n _onUndo() {\n this._applyHistoryState(this.history.undo());\n }\n _onRedo() {\n this._applyHistoryState(this.history.redo());\n }\n _applyHistoryState(state) {\n if (!state) return;\n this._historyChanging = true;\n this.unmaskedValue = state.unmaskedValue;\n this.el.select(state.selection.start, state.selection.end);\n this._saveSelection();\n this._historyChanging = false;\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import IMask from './holder.js';\n\n/** Provides details of changing model value */\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Can skip chars */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n static normalize(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n }\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0\n }, details);\n }\n\n /** Aggregate changes */\n aggregate(details) {\n this.rawInserted += details.rawInserted;\n this.skip = this.skip || details.skip;\n this.inserted += details.inserted;\n this.tailShift += details.tailShift;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor(value, from, stop) {\n if (value === void 0) {\n value = '';\n }\n if (from === void 0) {\n from = 0;\n }\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, DIRECTION, objectIncludes, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Append flags */\n\n/** Extract flags */\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\n/** Provides common masking stuff */\nclass Masked {\n static DEFAULTS = {\n skipInvalid: true\n };\n static EMPTY_VALUES = [undefined, null, ''];\n\n /** */\n\n /** */\n\n /** Transforms value before mask processing */\n\n /** Transforms each char before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing at the end of editing */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!this.optionsIsChanged(opts)) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value, {\n input: true\n });\n }\n\n /** Resolve new value */\n resolve(value, flags) {\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.resolve(value, {});\n }\n get typedValue() {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\n }\n set typedValue(value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.displayValue.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.resolve(value, {\n raw: true\n });\n }\n get displayValue() {\n return this.value;\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch, flags) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const consistentState = this.state;\n let details;\n [ch, details] = this.doPrepareChar(ch, flags);\n if (ch) details = details.aggregate(this._appendCharRaw(ch, flags));\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.shift();\n }\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags?.tail) flags._beforeTailState = this.state;\n let details;\n [str, details] = this.doPrepare(str, flags);\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags?.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n return details;\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n this.doCommit();\n }\n delete this._refreshing;\n return ret;\n }\n runIsolated(fn) {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n doSkipInvalid(ch, flags, checkTail) {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /** Does additional processing at the end of editing */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n splice(start, deleteCount, inserted, removeDirection, flags) {\n if (removeDirection === void 0) {\n removeDirection = DIRECTION.NONE;\n }\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n optionsIsChanged(opts) {\n return !objectIncludes(this, opts);\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n}\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nclass ChunksTailDetails {\n /** */\n\n constructor(chunks, from) {\n if (chunks === void 0) {\n chunks = [];\n }\n if (from === void 0) {\n from = 0;\n }\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n const phDetails = masked._appendPlaceholder(stop);\n details.aggregate(phDetails);\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted;\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks,\n ...props\n } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = this.block?.displayValue.length || 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aaX_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get rawInputValue() {\n return this._isRawInput ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n if (isResolved) details.rawInserted = this.char;\n this._value = details.inserted = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n return new ContinuousTailDetails('');\n }\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nclass PatternInputDefinition {\n static DEFAULT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n };\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager,\n ...maskOpts\n } = opts;\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get rawInputValue() {\n return this.masked.rawInputValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n const details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n if (details.inserted && this.doValidate(flags) === false) {\n details.inserted = details.rawInserted = '';\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append(str, flags, tail) {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled || this.isOptional) return details;\n this.isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail(fromPos, toPos) {\n return this.masked.extractTail(fromPos, toPos);\n }\n appendTail(tail) {\n return this.masked.appendTail(tail);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate(flags) {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n currentMaskFlags(flags) {\n return {\n ...flags,\n _beforeTailState: flags?._beforeTailState?.masked || flags?._beforeTailState\n };\n }\n}\n\nexport { PatternInputDefinition as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const mask = opts.mask;\n if (mask) opts.validate = value => value.search(mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport { DIRECTION } from '../core/utils.js';\nimport Masked from './base.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport PatternInputDefinition from './pattern/input-definition.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\n/** Pattern mask */\nclass MaskedPattern extends Masked {\n static DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n };\n static STOP_CHAR = '`';\n static ESCAPE_CHAR = '\\\\';\n static InputDefinition = PatternInputDefinition;\n static FixedDefinition = PatternFixedDefinition;\n\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n constructor(opts) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts?.definitions)\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n const pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const {\n expose,\n repeat,\n ...bOpts\n } = normalizeOpts(this.blocks[bName]); // TODO type Opts\n const blockOpts = {\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n ...bOpts,\n repeat,\n parent: this\n };\n const maskedBlock = repeat != null ? new IMask.RepeatBlock(blockOpts /* TODO */) : createMask(blockOpts);\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) this.exposeBlock = maskedBlock;\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const def = isInput ? new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this\n }) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n get state() {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state)\n };\n }\n set state(state) {\n if (!state) {\n this.reset();\n return;\n }\n const {\n _blocks,\n ...maskedState\n } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n get isComplete() {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\n }\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n get unmaskedValue() {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else super.unmaskedValue = unmaskedValue;\n }\n get value() {\n return this.exposeBlock ? this.exposeBlock.value :\n // TODO return _value when not in change?\n this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.value = value;\n }\n get typedValue() {\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n set typedValue(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.typedValue = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n _appendEager() {\n const details = new ChangeDetails();\n let startBlockIndex = this._mapPosToBlock(this.displayValue.length)?.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index, block; block = this._blocks[bi]; ++bi) {\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: flags._beforeTailState?._blocks?.[bi]\n });\n details.aggregate(blockDetails);\n if (blockDetails.skip || blockDetails.rawInserted) break; // go next char\n }\n return details;\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n const bDetails = b._appendPlaceholder(b._blocks?.length);\n this._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.displayValue;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n _forEachBlocksInRange(fromPos, toPos, fn) {\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n}\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import IMask from '../core/holder.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/change-details.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n /** */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n to = this.to || 0,\n from = this.from || 0,\n maxLength = this.maxLength || 0,\n autofix = this.autofix,\n ...patternOpts\n } = opts;\n this.to = to;\n this.from = from;\n this.maxLength = Math.max(String(to).length, maxLength);\n this.autofix = autofix;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n patternOpts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(this.maxLength - sameCharsCount);\n super._update(patternOpts);\n }\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let details;\n [ch, details] = super.doPrepareChar(ch.replace(/\\D/g, ''), flags);\n if (!this.autofix || !ch) {\n details.skip = !this.isComplete;\n return [ch, details];\n }\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n const nextVal = this.value + ch;\n if (nextVal.length > this.maxLength) return ['', details];\n const [minstr, maxstr] = this.boundaries(nextVal);\n if (Number(maxstr) < this.from) return [fromStr[nextVal.length - 1], details];\n if (Number(minstr) > this.to) {\n if (this.autofix === 'pad' && nextVal.length < this.maxLength) {\n return ['', details.aggregate(this.append(fromStr[nextVal.length - 1] + ch, flags))];\n }\n return [toStr[nextVal.length - 1], details];\n }\n return [ch, details];\n }\n doValidate(flags) {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(flags);\n }\n}\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n","import MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport { isString } from '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Date mask */\nclass MaskedDate extends MaskedPattern {\n static GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n });\n static DEFAULTS = {\n mask: Date,\n pattern: 'd{.}`m{.}`Y',\n format: (date, masked) => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: (str, masked) => {\n const [day, month, year] = str.split('.').map(Number);\n return new Date(year, month - 1, day);\n }\n };\n static extractPatternOptions(opts) {\n const {\n mask,\n pattern,\n ...patternOpts\n } = opts;\n return {\n ...patternOpts,\n mask: isString(mask) ? mask : pattern\n };\n }\n\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super(MaskedDate.extractPatternOptions({\n ...MaskedDate.DEFAULTS,\n ...opts\n }));\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n mask,\n pattern,\n blocks,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n const patternBlocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) patternBlocks.Y.from = opts.min.getFullYear();\n if (opts.max) patternBlocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && patternBlocks.Y.from === patternBlocks.Y.to) {\n patternBlocks.m.from = opts.min.getMonth() + 1;\n patternBlocks.m.to = opts.max.getMonth() + 1;\n if (patternBlocks.m.from === patternBlocks.m.to) {\n patternBlocks.d.from = opts.min.getDate();\n patternBlocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(patternBlocks, this.blocks, blocks);\n\n // add autofix\n Object.keys(patternBlocks).forEach(bk => {\n const b = patternBlocks[bk];\n if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix;\n });\n super._update({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern,\n blocks: patternBlocks\n });\n }\n doValidate(flags) {\n const date = this.date;\n return super.doValidate(flags) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n optionsIsChanged(opts) {\n return super.optionsIsChanged(MaskedDate.extractPatternOptions(opts));\n }\n}\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n","import { objectIncludes, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Dynamic mask for choosing appropriate mask in run-time */\nclass MaskedDynamic extends Masked {\n static DEFAULTS;\n\n /** Currently chosen mask */\n\n /** Currently chosen mask */\n\n /** Compliled {@link Masked} options */\n\n /** Chooses {@link Masked} depending on input value */\n\n constructor(opts) {\n super({\n ...MaskedDynamic.DEFAULTS,\n ...opts\n });\n this.currentMask = undefined;\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n this.exposeMask = undefined;\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => {\n const {\n expose,\n ...maskOpts\n } = normalizeOpts(m);\n const masked = createMask({\n overwrite: this._overwrite,\n eager: this._eager,\n skipInvalid: this._skipInvalid,\n ...maskOpts\n });\n if (expose) this.exposeMask = masked;\n return masked;\n }) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch(appended, flags, tail) {\n if (appended === void 0) {\n appended = '';\n }\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask?.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, {\n ...flags\n }, tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n const d = this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = d.inserted.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else if (prevMaskState) {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n _appendEager() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n return {\n ...flags,\n _beforeTailState: flags._beforeTailState?.currentMaskRef === this.currentMask && flags._beforeTailState?.currentMask || flags._beforeTailState\n };\n }\n doDispatch(appended, flags, tail) {\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n return this.dispatch(appended, this, flags, tail);\n }\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepare(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepare(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepareChar(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepareChar(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n reset() {\n this.currentMask?.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n get value() {\n return this.exposeMask ? this.exposeMask.value : this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n if (this.exposeMask) {\n this.exposeMask.value = value;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.value = value;\n }\n get unmaskedValue() {\n return this.exposeMask ? this.exposeMask.unmaskedValue : this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeMask) {\n this.exposeMask.unmaskedValue = unmaskedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.exposeMask ? this.exposeMask.typedValue : this.currentMask ? this.currentMask.typedValue : '';\n }\n set typedValue(typedValue) {\n if (this.exposeMask) {\n this.exposeMask.typedValue = typedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n return;\n }\n let unmaskedValue = String(typedValue);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = typedValue;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n get isComplete() {\n return Boolean(this.currentMask?.isComplete);\n }\n get isFilled() {\n return Boolean(this.currentMask?.isFilled);\n }\n remove(fromPos, toPos) {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(fromPos, toPos))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n get state() {\n return {\n ...super.state,\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: this.currentMask?.state\n };\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask,\n ...maskedState\n } = state;\n if (compiledMasks) this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n extractInput(fromPos, toPos, flags) {\n return this.currentMask ? this.currentMask.extractInput(fromPos, toPos, flags) : '';\n }\n extractTail(fromPos, toPos) {\n return this.currentMask ? this.currentMask.extractTail(fromPos, toPos) : super.extractTail(fromPos, toPos);\n }\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n nearestInputPos(cursorPos, direction) {\n return this.currentMask ? this.currentMask.nearestInputPos(cursorPos, direction) : super.nearestInputPos(cursorPos, direction);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : this._overwrite;\n }\n set overwrite(overwrite) {\n this._overwrite = overwrite;\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : this._eager;\n }\n set eager(eager) {\n this._eager = eager;\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : this._skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n this._skipInvalid = skipInvalid;\n }\n maskEquals(mask) {\n return Array.isArray(mask) ? this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const {\n mask: oldMask,\n ...restOpts\n } = mask[mi];\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n }) : super.maskEquals(mask);\n }\n typedValueEquals(value) {\n return Boolean(this.currentMask?.typedValueEquals(value));\n }\n}\nMaskedDynamic.DEFAULTS = {\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.displayValue.length : m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n","import MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\nclass MaskedEnum extends MaskedPattern {\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n enum: _enum,\n ...eopts\n } = opts;\n if (_enum) {\n const lengths = _enum.map(e => e.length);\n const requiredLength = Math.min(...lengths);\n const optionalLength = Math.max(...lengths) - requiredLength;\n eopts.mask = '*'.repeat(requiredLength);\n if (optionalLength) eopts.mask += '[' + '*'.repeat(optionalLength) + ']';\n this.enum = _enum;\n }\n super._update(eopts);\n }\n doValidate(flags) {\n return this.enum.some(e => e.indexOf(this.unmaskedValue) === 0) && super.doValidate(flags);\n }\n}\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\nclass MaskedFunction extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update({\n ...opts,\n validate: opts.mask\n });\n }\n}\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n","import { escapeRegExp, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Number mask */\nclass MaskedNumber extends Masked {\n static UNMASKED_RADIX = '.';\n static EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\n static DEFAULTS = {\n mask: Number,\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [MaskedNumber.UNMASKED_RADIX],\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n scale: 2,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n };\n\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super({\n ...MaskedNumber.DEFAULTS,\n ...opts\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n _updateRegExps() {\n const start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n const mid = '\\\\d*';\n const end = (this.scale ? `(${escapeRegExp(this.radix)}\\\\d{0,${this.scale}})?` : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(`[${this.mapToRadix.map(escapeRegExp).join('')}]`, 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const [prepCh, details] = super.doPrepareChar(this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch), flags);\n if (ch && !prepCh) details.skip = true;\n if (prepCh && !this.allowPositive && !this.value && prepCh !== '-') details.aggregate(this._appendChar('-'));\n return [prepCh, details];\n }\n _separatorsCount(to, extendOnSeparators) {\n if (extendOnSeparators === void 0) {\n extendOnSeparators = false;\n }\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n _separatorsCountFromSlice(slice) {\n if (slice === void 0) {\n slice = this._value;\n }\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (!this.thousandsSeparator) return super._appendCharRaw(ch, flags);\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const appendDetails = super._appendCharRaw(ch, flags);\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n return appendDetails;\n }\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n doValidate(flags) {\n // validate as string\n let valid = Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp));\n if (valid) {\n // validate as number\n const number = this.number;\n valid = valid && !isNaN(number) && (\n // check min bound for negative values\n this.min == null || this.min >= 0 || this.min <= this.number) && (\n // check max bound for positive values\n this.max == null || this.max <= 0 || this.number <= this.max);\n }\n return valid && super.doValidate(flags);\n }\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.format(validnum, this);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n doSkipInvalid(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.parse(this.unmaskedValue, this);\n }\n set typedValue(n) {\n this.rawInputValue = this.format(n, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n get allowNegative() {\n return this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n get allowPositive() {\n return this.min != null && this.min > 0 || this.max != null && this.max > 0;\n }\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n}\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\n\n/** Mask pipe source and destination types */\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\nfunction createPipe(arg, from, to) {\n if (from === void 0) {\n from = PIPE_TYPE.MASKED;\n }\n if (to === void 0) {\n to = PIPE_TYPE.MASKED;\n }\n const masked = createMask(arg);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nfunction pipe(value, mask, from, to) {\n return createPipe(mask, from, to)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern mask */\nclass RepeatBlock extends MaskedPattern {\n get repeatFrom() {\n return (Array.isArray(this.repeat) ? this.repeat[0] : this.repeat === Infinity ? 0 : this.repeat) ?? 0;\n }\n get repeatTo() {\n return (Array.isArray(this.repeat) ? this.repeat[1] : this.repeat) ?? Infinity;\n }\n constructor(opts) {\n super(opts);\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n repeat,\n ...blockOpts\n } = normalizeOpts(opts); // TODO type\n this._blockOpts = Object.assign({}, this._blockOpts, blockOpts);\n const block = createMask(this._blockOpts);\n this.repeat = repeat ?? block.repeat ?? this.repeat ?? Infinity; // TODO type\n\n super._update({\n mask: 'm'.repeat(Math.max(this.repeatTo === Infinity && this._blocks?.length || 0, this.repeatFrom)),\n blocks: {\n m: block\n },\n eager: block.eager,\n overwrite: block.overwrite,\n skipInvalid: block.skipInvalid,\n lazy: block.lazy,\n placeholderChar: block.placeholderChar,\n displayChar: block.displayChar\n });\n }\n _allocateBlock(bi) {\n if (bi < this._blocks.length) return this._blocks[bi];\n if (this.repeatTo === Infinity || this._blocks.length < this.repeatTo) {\n this._blocks.push(createMask(this._blockOpts));\n this.mask += 'm';\n return this._blocks[this._blocks.length - 1];\n }\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = new ChangeDetails();\n for (let bi = this._mapPosToBlock(this.displayValue.length)?.index ?? Math.max(this._blocks.length - 1, 0), block, allocated;\n // try to get a block or\n // try to allocate a new block if not allocated already\n block = this._blocks[bi] ?? (allocated = !allocated && this._allocateBlock(bi)); ++bi) {\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: flags._beforeTailState?._blocks?.[bi]\n });\n if (blockDetails.skip && allocated) {\n // remove the last allocated block and break\n this._blocks.pop();\n this.mask = this.mask.slice(1);\n break;\n }\n details.aggregate(blockDetails);\n if (blockDetails.skip || blockDetails.rawInserted) break; // go next char\n }\n return details;\n }\n _trimEmptyTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n const firstBlockIndex = Math.max(this._mapPosToBlock(fromPos)?.index || 0, this.repeatFrom, 0);\n let lastBlockIndex;\n if (toPos != null) lastBlockIndex = this._mapPosToBlock(toPos)?.index;\n if (lastBlockIndex == null) lastBlockIndex = this._blocks.length - 1;\n let removeCount = 0;\n for (let blockIndex = lastBlockIndex; firstBlockIndex <= blockIndex; --blockIndex, ++removeCount) {\n if (this._blocks[blockIndex].unmaskedValue) break;\n }\n if (removeCount) {\n this._blocks.splice(lastBlockIndex - removeCount + 1, removeCount);\n this.mask = this.mask.slice(removeCount);\n }\n }\n reset() {\n super.reset();\n this._trimEmptyTail();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._trimEmptyTail(fromPos, toPos);\n return removeDetails;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos == null && this.repeatTo === Infinity) return Infinity;\n return super.totalInputPositions(fromPos, toPos);\n }\n get state() {\n return super.state;\n }\n set state(state) {\n this._blocks.length = state._blocks.length;\n this.mask = this.mask.slice(0, this._blocks.length);\n super.state = state;\n }\n}\nIMask.RepeatBlock = RepeatBlock;\n\nexport { RepeatBlock as default };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { default as HTMLInputMaskElement } from './controls/html-input-mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as ChangeDetails } from './core/change-details.js';\nexport { DIRECTION, forceDirection } from './core/utils.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as createMask, normalizeOpts } from './masked/factory.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as ChunksTailDetails } from './masked/pattern/chunk-tail-details.js';\nexport { default as PatternFixedDefinition } from './masked/pattern/fixed-definition.js';\nexport { default as PatternInputDefinition } from './masked/pattern/input-definition.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nexport { default as RepeatBlock } from './masked/repeat.js';\nimport './core/action-details.js';\nimport './controls/input-history.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch {}\n\nexport { IMask as default };\n","\n\n\n\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-form-text.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-form-text.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vs-form-text.vue?vue&type=template&id=0946db29&scoped=true\"\nimport script from \"./vs-form-text.vue?vue&type=script&lang=js\"\nexport * from \"./vs-form-text.vue?vue&type=script&lang=js\"\nimport style0 from \"./vs-form-text.vue?vue&type=style&index=0&id=0946db29&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0946db29\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"flex flex-col gap-5\"},_vm._l((_vm.formScheme),function(item,index){return _c('div',{key:index,staticClass:\"flex flex-col gap-2\"},[_c('div',{staticClass:\"text-sm font-medium text-gray-900\"},[_vm._v(\" \"+_vm._s(item?.ua || item?.label)+\" \")]),_c(_vm.componentId(item.type),{tag:\"component\",attrs:{\"options\":item?.options || item?.original?.options || [],\"data\":item?.data || item?.original?.data,\"multiple\":item?.multiple || item?.original?.multiple,\"input-type\":item?.inputType || item?.original?.inputType,\"clearable\":item?.clearable || item?.original?.clearable,\"label\":item?.original?.label,\"input-id\":item?.original?.inputId || item?.inputId,\"disabled\":item?.original?.inputId || item?.disabled,\"col-model\":item?.original?.colModel || item?.colModel,\"now\":item?.original?.now || item?.now,\"append-to-body\":true},model:{value:(_vm.formValues[item.key]),callback:function ($$v) {_vm.$set(_vm.formValues, item.key, $$v)},expression:\"formValues[item.key]\"}})],1)}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-form.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-form.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vs-form.vue?vue&type=template&id=6d11ebe1\"\nimport script from \"./vs-form.vue?vue&type=script&lang=js\"\nexport * from \"./vs-form.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"name\":\"slide-fade\"}},[(_vm.visible)?_c('div',{ref:\"modalOverlay\",staticClass:\"vst-modal\"},[_c('div',{staticClass:\"vst-modal-bg\",on:{\"click\":_vm.handleOverlayClick}}),_c('div',{ref:\"modalBody\",staticClass:\"vst-modal-window\"},[_c('div',{staticClass:\"flex flex-col bg-white border shadow-sm rounded-xl pointer-events-auto\"},[_c('div',{staticClass:\"flex justify-between items-center py-3 px-4 border-b\"},[_c('div',{staticClass:\"font-bold text-gray-800 text-xl\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),(_vm.cancel)?_c('button',{staticClass:\"flex justify-center items-center w-7 h-7 text-sm font-semibold rounded-full border border-transparent text-gray-800 hover:bg-gray-100\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.$emit('update:visible', false)}}},[_c('svg',{staticClass:\"flex-shrink-0 w-4 h-4\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}},[_c('path',{attrs:{\"d\":\"M18 6 6 18\"}}),_c('path',{attrs:{\"d\":\"m6 6 12 12\"}})])]):_vm._e()]),(_vm.message)?_c('div',{staticClass:\"px-4 pt-4\"},[_vm._v(_vm._s(_vm.message))]):_vm._e(),_vm._t(\"default\",function(){return [_vm._t(\"content\"),_vm._t(\"footer\",function(){return [_c('div',{staticClass:\"flex justify-end items-center gap-x-2 py-3 px-4 border-t\"},[_c('button',{staticClass:\"py-2 px-3 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg border border-gray-200 bg-white text-gray-800 shadow-sm hover:bg-gray-50\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.handleClose}},[_vm._v(\" Відмінити \")]),_c('button',{staticClass:\"py-2 px-3 inline-flex items-center gap-x-2 text-sm font-semibold rounded-lg border border-transparent bg-blue-600 text-white hover:bg-blue-700\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.handleSubmit}},[_vm._v(\" Зберегти \")])])]})]})],2)])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-dialog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-dialog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vs-dialog.vue?vue&type=template&id=7b066d5a\"\nimport script from \"./vs-dialog.vue?vue&type=script&lang=js\"\nexport * from \"./vs-dialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./vs-dialog.vue?vue&type=style&index=0&id=7b066d5a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"popover\",staticClass:\"w-fit relative vst-popover\",on:{\"mouseover\":_vm.handleMouseHover,\"mouseleave\":_vm.handleMouseHover}},[_c('a',{staticClass:\"text-center\"},[_c('div',{ref:\"popoverRef\",on:{\"click\":_vm.togglePopover}},[_vm._t(\"reference\",function(){return [_c('button',[_vm._v(\" \"+_vm._s(_vm.isHoverable ? 'Hover me!' : 'Click me!')+\" \")])]})],2),_c('transition',{attrs:{\"name\":\"bounce\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isVisible),expression:\"isVisible\"}],ref:\"contentPop\",staticClass:\"vst-popover__content inline-block z-10 py-3 px-4 bg-white text-sm text-gray-600 rounded-md shadow-lg\",class:_vm.placement,style:({\n width: _vm.width ? _vm.width + 'px' : 'fit-content',\n ..._vm.placementSettings(),\n })},[_c('div',[_vm._t(\"default\",function(){return [_c('span',[_vm._v(\"Popover example\")])]})],2)])])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-popover.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-popover.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vs-popover.vue?vue&type=template&id=59d3fac4\"\nimport script from \"./vs-popover.vue?vue&type=script&lang=js\"\nexport * from \"./vs-popover.vue?vue&type=script&lang=js\"\nimport style0 from \"./vs-popover.vue?vue&type=style&index=0&id=59d3fac4&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","'use strict'\n\nmodule.exports = affineHull\n\nvar orient = require('robust-orientation')\n\nfunction linearlyIndependent(points, d) {\n var nhull = new Array(d+1)\n for(var i=0; i 0) - (v < 0);\n}\n\n//Computes absolute value of integer\nexports.abs = function(v) {\n var mask = v >> (INT_BITS-1);\n return (v ^ mask) - mask;\n}\n\n//Computes minimum of integers x and y\nexports.min = function(x, y) {\n return y ^ ((x ^ y) & -(x < y));\n}\n\n//Computes maximum of integers x and y\nexports.max = function(x, y) {\n return x ^ ((x ^ y) & -(x < y));\n}\n\n//Checks if a number is a power of two\nexports.isPow2 = function(v) {\n return !(v & (v-1)) && (!!v);\n}\n\n//Computes log base 2 of v\nexports.log2 = function(v) {\n var r, shift;\n r = (v > 0xFFFF) << 4; v >>>= r;\n shift = (v > 0xFF ) << 3; v >>>= shift; r |= shift;\n shift = (v > 0xF ) << 2; v >>>= shift; r |= shift;\n shift = (v > 0x3 ) << 1; v >>>= shift; r |= shift;\n return r | (v >> 1);\n}\n\n//Computes log base 10 of v\nexports.log10 = function(v) {\n return (v >= 1000000000) ? 9 : (v >= 100000000) ? 8 : (v >= 10000000) ? 7 :\n (v >= 1000000) ? 6 : (v >= 100000) ? 5 : (v >= 10000) ? 4 :\n (v >= 1000) ? 3 : (v >= 100) ? 2 : (v >= 10) ? 1 : 0;\n}\n\n//Counts number of bits\nexports.popCount = function(v) {\n v = v - ((v >>> 1) & 0x55555555);\n v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);\n return ((v + (v >>> 4) & 0xF0F0F0F) * 0x1010101) >>> 24;\n}\n\n//Counts number of trailing zeros\nfunction countTrailingZeros(v) {\n var c = 32;\n v &= -v;\n if (v) c--;\n if (v & 0x0000FFFF) c -= 16;\n if (v & 0x00FF00FF) c -= 8;\n if (v & 0x0F0F0F0F) c -= 4;\n if (v & 0x33333333) c -= 2;\n if (v & 0x55555555) c -= 1;\n return c;\n}\nexports.countTrailingZeros = countTrailingZeros;\n\n//Rounds to next power of 2\nexports.nextPow2 = function(v) {\n v += v === 0;\n --v;\n v |= v >>> 1;\n v |= v >>> 2;\n v |= v >>> 4;\n v |= v >>> 8;\n v |= v >>> 16;\n return v + 1;\n}\n\n//Rounds down to previous power of 2\nexports.prevPow2 = function(v) {\n v |= v >>> 1;\n v |= v >>> 2;\n v |= v >>> 4;\n v |= v >>> 8;\n v |= v >>> 16;\n return v - (v>>>1);\n}\n\n//Computes parity of word\nexports.parity = function(v) {\n v ^= v >>> 16;\n v ^= v >>> 8;\n v ^= v >>> 4;\n v &= 0xf;\n return (0x6996 >>> v) & 1;\n}\n\nvar REVERSE_TABLE = new Array(256);\n\n(function(tab) {\n for(var i=0; i<256; ++i) {\n var v = i, r = i, s = 7;\n for (v >>>= 1; v; v >>>= 1) {\n r <<= 1;\n r |= v & 1;\n --s;\n }\n tab[i] = (r << s) & 0xff;\n }\n})(REVERSE_TABLE);\n\n//Reverse bits in a 32 bit word\nexports.reverse = function(v) {\n return (REVERSE_TABLE[ v & 0xff] << 24) |\n (REVERSE_TABLE[(v >>> 8) & 0xff] << 16) |\n (REVERSE_TABLE[(v >>> 16) & 0xff] << 8) |\n REVERSE_TABLE[(v >>> 24) & 0xff];\n}\n\n//Interleave bits of 2 coordinates with 16 bits. Useful for fast quadtree codes\nexports.interleave2 = function(x, y) {\n x &= 0xFFFF;\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y &= 0xFFFF;\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n//Extracts the nth interleaved component\nexports.deinterleave2 = function(v, n) {\n v = (v >>> n) & 0x55555555;\n v = (v | (v >>> 1)) & 0x33333333;\n v = (v | (v >>> 2)) & 0x0F0F0F0F;\n v = (v | (v >>> 4)) & 0x00FF00FF;\n v = (v | (v >>> 16)) & 0x000FFFF;\n return (v << 16) >> 16;\n}\n\n\n//Interleave bits of 3 coordinates, each with 10 bits. Useful for fast octree codes\nexports.interleave3 = function(x, y, z) {\n x &= 0x3FF;\n x = (x | (x<<16)) & 4278190335;\n x = (x | (x<<8)) & 251719695;\n x = (x | (x<<4)) & 3272356035;\n x = (x | (x<<2)) & 1227133513;\n\n y &= 0x3FF;\n y = (y | (y<<16)) & 4278190335;\n y = (y | (y<<8)) & 251719695;\n y = (y | (y<<4)) & 3272356035;\n y = (y | (y<<2)) & 1227133513;\n x |= (y << 1);\n \n z &= 0x3FF;\n z = (z | (z<<16)) & 4278190335;\n z = (z | (z<<8)) & 251719695;\n z = (z | (z<<4)) & 3272356035;\n z = (z | (z<<2)) & 1227133513;\n \n return x | (z << 2);\n}\n\n//Extracts nth interleaved component of a 3-tuple\nexports.deinterleave3 = function(v, n) {\n v = (v >>> n) & 1227133513;\n v = (v | (v>>>2)) & 3272356035;\n v = (v | (v>>>4)) & 251719695;\n v = (v | (v>>>8)) & 4278190335;\n v = (v | (v>>>16)) & 0x3FF;\n return (v<<22)>>22;\n}\n\n//Computes next combination in colexicographic order (this is mistakenly called nextPermutation on the bit twiddling hacks page)\nexports.nextCombination = function(v) {\n var t = v | (v - 1);\n return (t + 1) | (((~t & -~t) - 1) >>> (countTrailingZeros(v) + 1));\n}\n\n","\"use strict\"\n\nvar convexHull1d = require('./lib/ch1d')\nvar convexHull2d = require('./lib/ch2d')\nvar convexHullnd = require('./lib/chnd')\n\nmodule.exports = convexHull\n\nfunction convexHull(points) {\n var n = points.length\n if(n === 0) {\n return []\n } else if(n === 1) {\n return [[0]]\n }\n var d = points[0].length\n if(d === 0) {\n return []\n } else if(d === 1) {\n return convexHull1d(points)\n } else if(d === 2) {\n return convexHull2d(points)\n }\n return convexHullnd(points, d)\n}","\"use strict\"\n\nmodule.exports = convexHull1d\n\nfunction convexHull1d(points) {\n var lo = 0\n var hi = 0\n for(var i=1; i points[hi][0]) {\n hi = i\n }\n }\n if(lo < hi) {\n return [[lo], [hi]]\n } else if(lo > hi) {\n return [[hi], [lo]]\n } else {\n return [[lo]]\n }\n}","'use strict'\n\nmodule.exports = convexHull2D\n\nvar monotoneHull = require('monotone-convex-hull-2d')\n\nfunction convexHull2D(points) {\n var hull = monotoneHull(points)\n var h = hull.length\n if(h <= 2) {\n return []\n }\n var edges = new Array(h)\n var a = hull[h-1]\n for(var i=0; i= front[k]) {\n x += 1\n }\n }\n c[j] = x\n }\n }\n }\n return cells\n}\n\nfunction convexHullnD(points, d) {\n try {\n return ich(points, true)\n } catch(e) {\n //If point set is degenerate, try to find a basis and rerun it\n var ah = aff(points)\n if(ah.length <= d) {\n //No basis, no try\n return []\n }\n var npoints = permute(points, ah)\n var nhull = ich(npoints, true)\n return invPermute(nhull, ah)\n }\n}","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vst-button{width:-moz-fit-content;width:fit-content}.vst-button:active{opacity:.8}.vst-button.disabled:active{opacity:.5}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".filezone__loader[data-v-074e1c84]{top:0;left:0;height:100%;z-index:0;position:absolute;border-radius:5px;background-color:#0069d1;transition:width .3s}.filezone__list[data-v-074e1c84]{max-height:195px;padding-right:5px;overflow-y:auto}.filezone__list[data-v-074e1c84]::-webkit-scrollbar{width:4px;background-color:#f5f5f5}.filezone__list[data-v-074e1c84]::-webkit-scrollbar-thumb{border-radius:5px;background-color:#1989fa}.filezone__list[data-v-074e1c84]::-webkit-scrollbar-track{background-color:#f5f5f5}.filezone__item[data-v-074e1c84]{position:relative;color:#fff;border-radius:5px;background-color:#1989fa;width:100%;white-space:nowrap;padding:5px 10px}.filezone__item[data-v-074e1c84]:not(:last-child){margin-bottom:10px}.filezone__title[data-v-074e1c84]{max-width:80%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filezone__delete[data-v-074e1c84]{cursor:pointer}.filezone__delete[data-v-074e1c84]:hover{color:red}.filezone__delete[data-v-074e1c84],.filezone__size[data-v-074e1c84],.filezone__title[data-v-074e1c84]{z-index:1}.filezone__input[data-v-074e1c84]{opacity:0;height:0;width:0;position:absolute;pointer-events:none}.filezone__wrapper[data-v-074e1c84]{display:flex;flex-direction:column;width:100%;border-radius:5px;padding:10px;height:260px;border:2px dashed #1989fa}.filezone__empty[data-v-074e1c84]{margin:auto;cursor:pointer;padding:20px 0;display:flex;flex-direction:column;align-items:center;color:#999;text-align:center;justify-content:center;transition:all .3s}.filezone__empty[data-v-074e1c84]:hover{color:#1989fa}.filezone__empty i[data-v-074e1c84]{font-size:48px;margin-bottom:10px}.filezone__empty div[data-v-074e1c84]{font-size:14px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vst-toast{width:350px}.vst-toast__icon{font-size:26px}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".map-search[data-v-7de519fa]{width:350px}.map-search__input-inner input[data-v-7de519fa]{padding-right:25px}.map-search__input-close[data-v-7de519fa]{position:absolute;cursor:pointer;right:10px;top:50%;transform:translateY(-50%)}.map-search__input-list[data-v-7de519fa]{position:absolute;top:50px;z-index:1;background:#fff;overflow-y:auto;width:calc(100% - 25px)}.map-search__input-list__item[data-v-7de519fa]{padding:5px 10px;font-size:14px;cursor:pointer}.map-search__input-list__item[data-v-7de519fa]:hover{background:#ebebeb}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".layers[data-v-40fd1791]{width:230px;top:0;right:40px;position:absolute;background-color:#fff;border-radius:5px;padding:10px;max-height:230px;overflow-y:auto;overflow-x:hidden}.layers[data-v-40fd1791]::-webkit-scrollbar{width:6px;background-color:#f5f5f5}.layers[data-v-40fd1791]::-webkit-scrollbar-thumb{background-color:#b5b5b5}.layers[data-v-40fd1791]::-webkit-scrollbar-track{background-color:#f5f5f5}.layers .vs-form-checkbox[data-v-40fd1791]{flex-direction:column!important}.layers__title[data-v-40fd1791]{font-weight:500;margin-bottom:5px}.layers__item label[data-v-40fd1791],.layers__item span[data-v-40fd1791]{font-size:13px;font-weight:400}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".legend[data-v-2b0049d2]{position:absolute;background-color:#fff;border-radius:5px;bottom:10px;left:10px;max-width:220px;max-height:250px;overflow-y:auto}.legend[data-v-2b0049d2]::-webkit-scrollbar{width:6px;background-color:#f5f5f5}.legend[data-v-2b0049d2]::-webkit-scrollbar-thumb{background-color:#b5b5b5}.legend[data-v-2b0049d2]::-webkit-scrollbar-track{background-color:#f5f5f5}.legend__wrapper[data-v-2b0049d2]{padding:10px;font-size:13px}.legend__wrapper[data-v-2b0049d2]:not(:last-child){border-bottom:1px solid #d0d0d0}.legend__title[data-v-2b0049d2]{width:100%;overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap;font-weight:600}.legend__title.active[data-v-2b0049d2]{text-wrap:balance;margin-bottom:5px}.legend__label[data-v-2b0049d2]{font-weight:400}.legend__color[data-v-2b0049d2]{width:12px;height:12px;border-radius:3px;margin-right:7px}.legend__item[data-v-2b0049d2]{display:flex;align-items:center}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".list-enter-active,.list-leave-active{transition:transform opacity .5s .5s}.list-enter-from,.list-leave-to{opacity:0;transform:translateX(30px)}.form-geom{position:relative}.form-geom .mapbox-gl-draw_ctrl-draw-btn{display:none}.form-geom__search{position:absolute;top:10px;left:10px}.form-geom__panel{top:60px;left:10px;position:absolute}.form-geom__features{display:flex;flex-direction:column;align-items:flex-start;max-height:117px;overflow-y:auto;overflow-x:hidden}.form-geom__features::-webkit-scrollbar{width:3px;background-color:#f5f5f5}.form-geom__features::-webkit-scrollbar-thumb{background-color:#b5b5b5}.form-geom__features::-webkit-scrollbar-track{background-color:#f5f5f5}.form-geom__feature{width:100%;border-bottom:1px solid #f9fafb;padding:5px 0}.form-geom__tools{position:absolute;top:10px;right:10px}.form-geom__tool{position:relative;width:30px;height:30px;font-size:25px;display:flex;align-items:center;justify-content:center}.form-geom__tool i{font-size:medium}.form-geom__tool:hover i{color:#fff}.form-geom__tool:not(:last-child){margin-bottom:5px}.form-geom__layers{position:absolute;top:60px;left:11px}.form-geom__layers-body{margin-top:10px}.form-geom__layers-body .mapPortal__allLayer{position:relative;left:unset;top:unset;z-index:1}.form-geom .maplibregl-popup-content.mapboxgl-popup-content{padding:5px!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"[data-v-4644ad8e]:root{--formHeight:0px}.formAdmin[data-v-4644ad8e]{padding:15px;background:#fff}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".select-option[data-v-4e5a42ca]{overflow-x:hidden;text-overflow:ellipsis}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".form-codeflask[data-v-5dcecbfe]{position:relative;width:100%}.codeflask pre[data-v-5dcecbfe]{color:#000;background-color:transparent;border:unset;border-radius:unset}.codeflask__textarea[data-v-5dcecbfe]{border:1px solid #eee}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"input[data-v-0f4c893e]{outline:none!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vs-upload[data-v-536d1599]:focus{outline:2px solid #2563eb}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vs-form-number{border:none!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vs-form-select[data-v-2bd47cd2]{overflow-y:hidden}input[data-v-2bd47cd2]{outline-color:var(--primary)}.vs-select__arrow[data-v-2bd47cd2]{right:15px;top:50%;transform:translateY(-50%);position:absolute}.vs-select__arrow.active[data-v-2bd47cd2]{transform:rotate(180deg) translateY(50%)}.vs-select__clear[data-v-2bd47cd2]{right:30px;top:50%;transform:translateY(-50%);position:absolute}.vs-select__options[data-v-2bd47cd2]{overflow-y:auto;z-index:1000000;position:fixed}.vs-select-color[data-v-2bd47cd2]{width:15px;height:15px;border-radius:3px;margin-right:10px}.vstSelect-input[data-v-2bd47cd2]{padding-right:45px;overflow-x:hidden;text-overflow:ellipsis;text-wrap:nowrap}.vstSelect-input[data-v-2bd47cd2]:focus-visible{outline:none}.vstSelect-input-inner[data-v-2bd47cd2]{width:98%;margin:5px auto 0;display:block}.vstSelect-input-inner[data-v-2bd47cd2]:focus{outline:none;box-shadow:none}.vs-select:focus+.absolute[data-v-2bd47cd2]{display:block}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vs-form-switch[data-v-b4557620]:focus{box-shadow:none!important;border:none!important;outline:none!important}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vs-form-text[data-v-0946db29]:focus:focus,[type=date][data-v-0946db29]:focus,[type=datetime-local][data-v-0946db29]:focus,[type=email][data-v-0946db29]:focus,[type=month][data-v-0946db29]:focus,[type=number][data-v-0946db29]:focus,[type=password][data-v-0946db29]:focus,[type=search][data-v-0946db29]:focus,[type=tel][data-v-0946db29]:focus,[type=text][data-v-0946db29]:focus,[type=time][data-v-0946db29]:focus,[type=url][data-v-0946db29]:focus,[type=week][data-v-0946db29]:focus{box-shadow:none;outline:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vs-textarea[data-v-ef9b7408]:focus{border-color:transparent}.slide-enter-active[data-v-ef9b7408],.slide-leave-active[data-v-ef9b7408]{transition:transform .1s,opacity .1s}.slide-enter[data-v-ef9b7408]{opacity:0;transform:translateY(-10px)}.slide-leave-to[data-v-ef9b7408]{opacity:0;transform:translateY(-5px)}textarea[data-v-ef9b7408]:focus{box-shadow:none;outline:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vs-upload[data-v-5e37a156]:focus{outline:2px solid #2563eb}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".hidden-list[data-v-47c2b411]{pointer-events:none!important;display:none!important}.dropdown-disabled[data-v-47c2b411]{opacity:.5;cursor:not-allowed}.vs-dropdown__btn[data-v-47c2b411]:focus{box-shadow:none}.vs-dropdown__list div[data-v-47c2b411]{transition:all .3s;padding:5px 5px;border-radius:5px}.vs-dropdown__arrow[data-v-47c2b411]{transition:transform .3s}.vs-dropdown__arrow.active[data-v-47c2b411]{transform:rotate(180deg)}.divider[data-v-47c2b411]:after{content:\\\"\\\";box-sizing:border-box;height:1px;width:100%;display:block;background-color:#e5e7eb;opacity:50%}.slide-enter-active[data-v-47c2b411],.slide-leave-active[data-v-47c2b411]{transition:transform .3s,opacity .5s}.slide-enter[data-v-47c2b411]{opacity:0;transform:translateY(-10px)}.slide-leave-to[data-v-47c2b411]{opacity:0;transform:translateY(-5px)}.options[data-v-47c2b411]{display:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vst_tabs[data-v-02842c59]{overflow-y:auto;width:100%}.vst_tabs[data-v-02842c59]::-webkit-scrollbar{height:6px;width:6px;background-color:#f5f5f5}.vst_tabs[data-v-02842c59]::-webkit-scrollbar-thumb{background-color:var(--primary);border-radius:2px}.vst_tabs[data-v-02842c59]::-webkit-scrollbar-track{background-color:#f5f5f5}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vst-modal{left:0;top:0;z-index:10000;width:100%;height:100%;position:fixed}.vst-modal-window{left:50%;top:-60%;position:relative;transform:translate(-50%,-50%);width:60%}.vst-modal-body{max-height:600px;overflow-y:auto;overflow-x:hidden}.vst-modal-body::-webkit-scrollbar{width:6px;background-color:#f5f5f5}.vst-modal-body::-webkit-scrollbar-thumb{border-radius:5px;background-color:var(--primary)}.vst-modal-body::-webkit-scrollbar-track{background-color:#f5f5f5}.vst-modal__title{max-width:90%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.vst-modal-box{position:absolute;left:50%;top:50%;transform:translate(-50%,-60%);z-index:10001}.vst-modal-bg{width:100%;height:100%;opacity:.3;background-color:#000}.slide-fade-enter-active,.slide-fade-leave-active{transition:all .3s ease}.slide-fade-enter,.slide-fade-leave-to{transform:scale(1.02);opacity:0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vst-popover__content{z-index:100000;position:fixed}.vst-popover .right:before{left:-9px;border-style:solid;border-width:11px 9px 11px 0;border-color:transparent #fff transparent transparent}.vst-popover .left:before,.vst-popover .right:before{content:\\\"\\\";width:0;height:0;top:50%;transform:translateY(-50%);position:absolute}.vst-popover .left:before{right:-9px;border-style:solid;border-width:11px 0 11px 9px;border-color:transparent transparent transparent #fff}.vst-popover .bottom:before{top:-8px;border-style:solid;border-width:0 12.5px 8px 12.5px;border-color:transparent transparent #fff transparent}.vst-popover .bottom:before,.vst-popover .top:before{content:\\\"\\\";position:absolute;width:0;left:50%;transform:translateX(-50%);height:0}.vst-popover .top:before{bottom:-8px;border-style:solid;border-width:8px 12.5px 0 12.5px;border-color:#fff transparent transparent transparent}.bounce-enter-active,.bounce-leave-active{animation-duration:.3s;animation-fill-mode:both}@keyframes bounce-in-left{0%{transform:scale(0) translate(5%);transform-origin:right center}50%{transform:scale(1.25) translate(0);transform-origin:right center}to{transform:scale(1) translate(0);transform-origin:right center}}@keyframes bounce-in-right{0%{transform:scale(0) translate(-5%);transform-origin:left center}50%{transform:scale(1.25) translate(0);transform-origin:left center}to{transform:scale(1) translate(0);transform-origin:left center}}@keyframes bounce-in-top{0%{transform:scale(0) translateY(30%);transform-origin:bottom center}50%{transform:scale(1.25) translate(0);transform-origin:bottom center}to{transform:scale(1) translate(0);transform-origin:bottom center}}@keyframes bounce-in-bottom{0%{transform:scale(0) translateY(-30%);transform-origin:top center}50%{transform:scale(1.25) translate(0);transform-origin:top center}to{transform:scale(1) translate(0);transform-origin:top center}}.bounce-enter-active.right{animation-name:bounce-in-right}.bounce-enter-active.left{animation-name:bounce-in-left}.bounce-leave-active.right{animation-name:bounce-in-right;animation-direction:reverse}.bounce-leave-active.left{animation-name:bounce-in-left;animation-direction:reverse}.bounce-enter-active.top{animation-name:bounce-in-top}.bounce-enter-active.bottom{animation-name:bounce-in-bottom}.bounce-leave-active.top{animation-name:bounce-in-top;animation-direction:reverse}.bounce-leave-active.bottom{animation-name:bounce-in-bottom;animation-direction:reverse}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".datepicker-options[data-v-ebdedb8e]{display:fixed}.vs-form-datepicker[data-v-ebdedb8e]:focus{box-shadow:none}.grid-cols-7[data-v-ebdedb8e]{grid-template-columns:repeat(7,minmax(0,1fr))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vst-radio__input[data-v-64a35a15]:focus{outline:none}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"data:image/png;base64,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\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"data:image/png;base64,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P0A9dgflJJi2Szl5led4F57jlvpECs/6vuTjuhR3dAo961VP9UoRby5eaGBuxz2Zy/3pyiWBlJEiA/s5FHaEnU170tGmBChvV5O1/Zske9dQ3upqiLdbfuL3hTpvY+q8m3ELRkrj1xLs36Md8A17jhOutYwTnYufJw89tLmvbxmhJagIVEmgaoW0yvjlXQREQASakkA77LJL42wfGmdpGiktpZBagaFRfQqNsDNGSykNldFTUQ6+3ZQFWEJlRsA6pVmzZjML1sks0hoiosy9vMoqq2wVjg7VEMNQkHbLTzEI7tOqdCoeTd1nn7dK2tjwf2F5Gsro3cVhdS4CItCcBKSQNud9kVQiIAIikIqAjZLSQNu8lGeujZiyW8pvs7mHI6W2tb/tlF28jigvcRfSmLUpw+doZDQvxM0Xb40zpbLKiE03nWtLiOpVRp1A7ZYfl6+4yTPqo5hO4nndFPt4fi+OHTv2Qb5x/Y+4P9lFQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAQ6mYDfyZlX3kVABESgnQgc/WRhlf5F3j6Dvjdw6UT/mnbKm/IiAiIgAiIgAiLQngSkkLbnfVWuREAEOohA7+OFsc8v8w4peN43yfZGlnW/y9t/9kT/2g7CoKyKgAiIgAiIgAi0IIGeFpRZIouACIhA3QSOm1fY4A3f28MiWqXg/fyCyf7CuiMdhQiOmFc4YOEy7zsk/fZhyRe89ww7b8GTI+YXthv0vBO9gjcZ8TdoUBYWer43r8vzzpk1yb+vQWkqmVEmcPQjhY36+rzv0amzI6I0qqy5XC9kdGDumDHeSRdv5T/n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vaXiGC338PM8x9WSftjWO6CWsArTOAKhollR2UwjEc9wdYeNvhHCevQvqneamUs5jzhd3GlMemI2KtUTUyq89dBYDwAArSK8cWt+zbJmtNII6bA8tdAI6TC5wxP7rtbACm97tkR/K+ssVude9DBm+gqV+JM9a3q/rfW7Vklpya19CNCr94HCAFOk3LRd33u1u8vbhSlgLfWJFJ71famHrqt0Z6ivplBf17v2qFIymV1n07LtaITNJW+jus8B3NjU09sxzQZqmWVeETWcACNtV1PespspVUcOKG/XMLpUV0O83fITx3nEo4WNB1d4N+O2Rdw9yc7z+z1GRr/RrCOjSTInuTHq+3naNz3U4dcnXZebCLQDAeo+HSIgAiLQeQTaYZfdI+YV9qGhUrGR0moKqZVGlG2bxnzGaCmloTJ6Ksrotzvv6eisHFunNGvWHiHX64xyzl8eO8bbKhwdqlmUdstPMYjgqwH/9I6mQ/F4OhKYzTvi+F82kzjtksn+3SOuyEEERKApCUghbcrbIqFEQAREIB0BGyXF5+ZlfCdN2S3jvXku2UgpCveJNDxtp+xh64hylNKm/s1jaPYcjYzmSLnJoq5lplSGWVhIY2yuLSGqVxl1MrVbfly+4qZtXnT0Q96kPs/btKvgjUc5fbHH9x6cMdG39Ws6REAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERAACviiIgAiIgAgMJ7DPPvvshMuNoeueN9xww5zhPnQmAiIgAiIgAiIgAiKQBYGeLCJRHCIgAiLQTgR839++UCiMtzyZHUMKaTvd4AzzctBBB627bNmydxDl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UvksxkDZi5yw9xKm1xzi5RjlMLe10HTi3YPCeTZ1ZPD5F2TYieT/wnPzFPb+vr6+zTDdxmA2a0Yjo3aDdIiACIiACIhADgS6ysRpa5gadTQyrUblqSHp0GgyZTTYwCghwWBNqflJuNZop2rucTV+S+Wjmjiq8VsqvbzdU8tIebDNVtxuusEGRjTArcPi2piQ+9Eg3yN2LqsI1EMgdflMmwhK4ADldgr+o3JLXRaN+DMD5GyU1prXQjMKfarF4eQhbp/fppy/FzOujM4kHU3TdaBkioAIiIAIiEDGBEoqpLaGibQyb2QkyD8qa8Ro7Ng60cX2C+0JojW/E0qF7aAbrRslL2faLyb57qGfmFPjrVWUp0zKQ6PTy5toFfmx0ZzbkMfKdqCMWqMdt+LG/XN8f/E3dch9axjWpgW33QGvtqgfKtyYzO5hNeWzgkzDLlu55XcEv1eHXchgLTRxFsJnYwfsd/GL775rQ7j2fHwGpfgorg1bX1oki05FQAREQAREQAREoHMJMBp2s02Rsx/2MxwJs8fctcuuA9MhJpuxbMrvU8XZtZEfysZetkau+JrORaDZCFBex1OP/drVZUXmNfGRzHpl57lYm867iTw32y5atGi9euNTeBEQAREQAREQgXQEgo+Dp/MqX81IgAbUm2iUXYBs8+nJvyguIw2sYzifRO/+cYwEBN8AiV+XXQREQASalYApo9Rh5dZCm+jX2rTe+Ohms+ZHcomACIiACIiACIiACIiACIiACLQIAUZDvx4fEaXz7SwbEcXtmrg7SuueLZIliSkCIiACIiACIpBAoOQa0gS/chIBERABERCBhhBg1LMRa6EbkhclIgIiIAIiIAIiIAIiIAIiIAIi0GIEtBa6xW6YxBUBERABERABERABERABERABERABERABERABERCBViHw/wHIAHUN1iL6RwAAAABJRU5ErkJggg==\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+PGcgc3Ryb2tlPSIjNTU1IiBzdHJva2Utd2lkdGg9IjEuNSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiPjxwYXRoIGQ9Im01LjY4NyAxMC4yOTQtMS4yODUgMS4yODhjLTEuMDUgMS4wNS0xLjAzNSAyLjc3Mi4wMzcgMy44NDRsLjEzNS4xMzVjMS4wNzIgMS4wNzIgMi43OTQgMS4wODggMy44NDQuMDM3bDIuNzItMi43MmMxLjA1MS0xLjA1IDEuMDM0LTIuNzcyLS4wMzctMy44NDNsLS4xMzYtLjEzNiIvPjxwYXRoIGQ9Im0xNC4zMDUgOS43MTMgMS4yODctMS4yOWMxLjA1Mi0xLjA1MSAxLjAzNi0yLjc3My0uMDM2LTMuODQ0bC0uMTM1LS4xMzZjLTEuMDcyLTEuMDcyLTIuNzk0LTEuMDg4LTMuODQ1LS4wMzZMOC44NTcgNy4xMjZjLTEuMDUxIDEuMDUxLTEuMDM0IDIuNzcyLjAzNyAzLjg0M2wuMTM2LjEzNiIvPjwvZz48L3N2Zz4=\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PHJlY3Qgd2lkdGg9IjE3IiBoZWlnaHQ9IjE3IiB4PSIuNSIgeT0iLjUiIHJ4PSIyIiBmaWxsPSIjRkZGIiBzdHJva2U9IiNDQ0MiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PHBhdGggZD0iTTE2IDBhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYyYTIgMiAwIDAgMSAyLTJoMTR6bS0xLjc5MyA1LjI5M2ExIDEgMCAwIDAtMS40MTQgMEw3LjUgMTAuNTg1IDUuMjA3IDguMjkzbC0uMDk0LS4wODNhMSAxIDAgMCAwLTEuMzIgMS40OTdsMyAzIC4wOTQuMDgzYTEgMSAwIDAgMCAxLjMyLS4wODNsNi02IC4wODMtLjA5NGExIDEgMCAwIDAtLjA4My0xLjMyeiIgZmlsbD0iIzRCOTZFNiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMCAzMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzAgMzAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwYXRoIGQ9Im0xNS41IDEyLjUgMiAyTDEyIDIwaC0ydi0ybDUuNS01LjV6TTE4IDEwbDIgMi0xLjUgMS41LTItMkwxOCAxMHoiIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiM1NTUiLz48L3N2Zz4=\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*!\\n * @toast-ui/editor\\n * @version 3.2.2 | Fri Feb 17 2023\\n * @author NHN Cloud FE Development Lab \\n * @license MIT\\n */.ProseMirror{position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;-webkit-font-feature-settings:\\\"liga\\\" 0;font-feature-settings:\\\"liga\\\" 0}.ProseMirror pre{white-space:pre-wrap}.ProseMirror li{position:relative}.ProseMirror-hideselection ::selection{background:transparent}.ProseMirror-hideselection ::-moz-selection{background:transparent}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:\\\"\\\";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid #8cf;pointer-events:none}img.ProseMirror-separator{display:inline!important;border:none!important;margin:0!important}.auto-height,.auto-height .toastui-editor-defaultUI{height:auto}.auto-height .toastui-editor-md-container{position:relative}:not(.auto-height)>.toastui-editor-defaultUI,:not(.auto-height)>.toastui-editor-defaultUI>.toastui-editor-main{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}:not(.auto-height)>.toastui-editor-defaultUI>.toastui-editor-main{-ms-flex:1;-webkit-box-flex:1;flex:1}.toastui-editor-defaultUI-toolbar:after,.toastui-editor-md-container:after{content:\\\"\\\";display:block;height:0;clear:both}.toastui-editor-main{min-height:0;position:relative;height:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-md-container{display:none;overflow:hidden;height:100%}.toastui-editor-md-container .toastui-editor{line-height:1.5;position:relative}.toastui-editor-md-container .toastui-editor,.toastui-editor-md-container .toastui-editor-md-preview{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0;height:inherit}.toastui-editor-md-container .toastui-editor-md-preview{overflow:auto;padding:0 25px;height:100%}.toastui-editor-md-container .toastui-editor-md-preview>p:first-child{margin-top:0!important}.toastui-editor-md-container .toastui-editor-md-preview .toastui-editor-contents{padding-top:8px}.toastui-editor-main .toastui-editor-md-tab-style>.toastui-editor,.toastui-editor-main .toastui-editor-md-tab-style>.toastui-editor-md-preview{width:100%;display:none}.toastui-editor-main .toastui-editor-md-tab-style>.active{display:block}.toastui-editor-main .toastui-editor-md-vertical-style>.toastui-editor-tabs{display:none}.toastui-editor-main .toastui-editor-md-tab-style>.toastui-editor-tabs{display:block}.toastui-editor-main .toastui-editor-md-vertical-style .toastui-editor,.toastui-editor-main .toastui-editor-md-vertical-style .toastui-editor-md-preview{width:50%}.toastui-editor-main .toastui-editor-md-splitter{display:none;height:100%;width:1px;background-color:#ebedf2;position:absolute;left:50%}.toastui-editor-main .toastui-editor-md-vertical-style .toastui-editor-md-splitter{display:block}.toastui-editor-ww-container{display:none;overflow:hidden;height:inherit;background-color:#fff}.auto-height .toastui-editor-main-container{position:relative}.toastui-editor-main-container{position:absolute;line-height:1;color:#222;width:100%;height:inherit}.toastui-editor-ww-container>.toastui-editor{height:inherit;position:relative;width:100%}.toastui-editor-ww-container .toastui-editor-contents{overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px 25px 0 25px;height:inherit}.toastui-editor-ww-container .toastui-editor-contents p{margin:0}.toastui-editor-md-mode .toastui-editor-md-container,.toastui-editor-ww-mode .toastui-editor-ww-container{display:block;z-index:20}.toastui-editor-md-mode .toastui-editor-md-vertical-style{display:-ms-flexbox;display:-webkit-box;display:flex}.toastui-editor-defaultUI.hidden,.toastui-editor-main.hidden{display:none}.toastui-editor-defaultUI .ProseMirror{padding:18px 25px}.toastui-editor-defaultUI{position:relative;border:1px solid #dadde6;height:100%;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,나눔바른고딕,Nanum Barun Gothic,맑은고딕,Malgun Gothic,sans-serif;border-radius:4px}.toastui-editor-defaultUI button{color:#333;height:28px;font-size:13px;cursor:pointer;border:none;border-radius:2px}.toastui-editor-defaultUI .toastui-editor-ok-button{min-width:63px;height:32px;background-color:#00a9ff;color:#fff;outline-color:#009bf2}.toastui-editor-defaultUI .toastui-editor-ok-button:hover{background-color:#009bf2}.toastui-editor-defaultUI .toastui-editor-close-button{min-width:63px;height:32px;background-color:#f7f9fc;border:1px solid #dadde6;margin-right:5px;outline-color:#cbcfdb}.toastui-editor-defaultUI .toastui-editor-close-button:hover{border-color:#cbcfdb}.toastui-editor-mode-switch{background-color:#fff;border-top:1px solid #dadde6;font-size:12px;text-align:right;height:28px;padding-right:10px;border-radius:0 0 3px 3px}.toastui-editor-mode-switch .tab-item{display:inline-block;width:96px;height:24px;line-height:24px;text-align:center;background:#f7f9fc;color:#969aa5;margin-top:-1px;margin-right:-1px;cursor:pointer;border:1px solid #dadde6;border-radius:0 0 4px 4px;font-weight:500;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-mode-switch .tab-item.active{border-top:1px solid #fff;background-color:#fff;color:#555}.toastui-editor-defaultUI .toastui-editor-md-tab-container{float:left;height:45px;font-size:13px;background:#f7f9fc;border-bottom:1px solid #ebedf2;border-top-left-radius:3px}.toastui-editor-md-tab-container .toastui-editor-tabs{margin-left:15px;height:100%}.toastui-editor-md-tab-container .tab-item{display:inline-block;width:70px;height:33px;line-height:33px;font-size:12px;font-weight:500;text-align:center;background:#eaedf1;color:#969aa5;cursor:pointer;border:1px solid #dadde6;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:13px}.toastui-editor-md-tab-container .tab-item.active{border-bottom:1px solid #fff;background-color:#fff;color:#555}.toastui-editor-md-tab-container .tab-item:last-child{margin-left:-1px}.toastui-editor-defaultUI-toolbar{display:-ms-flexbox;display:-webkit-box;display:flex;padding:0 25px;height:45px;background-color:#f7f9fc;border-bottom:1px solid #ebedf2;border-radius:3px 3px 0 0}.toastui-editor-toolbar{height:46px;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-toolbar-divider{display:inline-block;width:1px;height:18px;background-color:#e1e3e9;margin:14px 12px}.toastui-editor-toolbar-group{display:-ms-flexbox;display:-webkit-box;display:flex}.toastui-editor-defaultUI-toolbar button{-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;width:32px;height:32px;padding:0;border-radius:3px;margin:7px 5px;border:1px solid #f7f9fc}.toastui-editor-defaultUI-toolbar button:not(:disabled):hover{border:1px solid #e4e7ee;background-color:#fff}.toastui-editor-defaultUI-toolbar .scroll-sync{display:inline-block;position:relative;width:70px;height:10px;text-align:center;line-height:10px;color:#81858f;cursor:pointer}.toastui-editor-defaultUI-toolbar .scroll-sync:before{content:\\\"Scroll\\\";position:absolute;left:0;font-size:14px}.toastui-editor-defaultUI-toolbar .scroll-sync.active:before{color:#00a9ff}.toastui-editor-defaultUI-toolbar .scroll-sync input{opacity:0;width:0;height:0}.toastui-editor-defaultUI-toolbar .switch{position:absolute;top:0;left:45px;right:0;bottom:0;background-color:#d6d8de;-webkit-transition:.4s;transition:.4s;border-radius:50px}.toastui-editor-defaultUI-toolbar input:checked+.switch{background-color:#acddfa}.toastui-editor-defaultUI-toolbar .switch:before{position:absolute;content:\\\"\\\";height:14px;width:14px;left:0;bottom:-2px;background-color:#94979f;-webkit-transition:.4s;transition:.4s;border-radius:50%}.toastui-editor-defaultUI-toolbar input:checked+.switch:before{background-color:#00a9ff;-webkit-transform:translateX(12px);transform:translateX(12px)}.toastui-editor-dropdown-toolbar .scroll-sync{margin:0 5px}.toastui-editor-dropdown-toolbar{position:absolute;height:46px;z-index:30;border-radius:2px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.08);box-shadow:0 2px 4px 0 rgba(0,0,0,.08);border:1px solid #dadde6;background-color:#f7f9fc;display:-ms-flexbox;display:-webkit-box;display:flex}.toastui-editor-toolbar-item-wrapper{margin:7px 5px;height:32px;line-height:32px}.toastui-editor-popup{width:400px;margin-right:auto;background:#fff;z-index:30;position:absolute;border-radius:2px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.08);box-shadow:0 2px 4px 0 rgba(0,0,0,.08);border:1px solid #dadde6}.toastui-editor-popup-body{padding:15px;font-size:12px}.toastui-editor-popup-body label{font-weight:600;color:#555;display:block;margin:20px 0 5px}.toastui-editor-popup-body .toastui-editor-button-container{text-align:right;margin-top:20px}.toastui-editor-popup-body input[type=text]{width:calc(100% - 26px);height:30px;padding:0 12px;border-radius:2px;border:1px solid #e1e3e9;color:#333}.toastui-editor-popup-body input[type=text]:focus{outline:1px solid #00a9ff;border-color:transparent}.toastui-editor-popup-body input[type=text].disabled{background-color:#f7f9fc;border-color:#e1e3e9;color:#969aa5}.toastui-editor-popup-body input[type=file]{opacity:0;border:none;width:1px;height:1px;position:absolute;top:0;left:0}.toastui-editor-popup-body input.wrong,.toastui-editor-popup-body span.wrong{border-color:#fa2828}.toastui-editor-popup-add-image .toastui-editor-popup-body,.toastui-editor-popup-add-link .toastui-editor-popup-body{padding:0 20px 20px}.toastui-editor-popup-add-image .toastui-editor-tabs{margin:5px 0 10px}.toastui-editor-popup-add-image .toastui-editor-tabs .tab-item{display:inline-block;width:60px;height:40px;line-height:40px;border-bottom:1px solid #dadde6;color:#333;font-size:13px;font-weight:600;text-align:center;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-popup-add-image .toastui-editor-tabs .tab-item:hover{border-bottom:1px solid #cbcfdb}.toastui-editor-popup-add-image .toastui-editor-tabs .tab-item.active{color:#00a9ff;border-bottom:2px solid #00a9ff}.toastui-editor-popup-add-image .toastui-editor-file-name{width:58%;display:inline-block;border-radius:2px;border:1px solid #e1e3e9;color:#dadde6;height:30px;line-height:30px;padding:0 12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.toastui-editor-popup-add-image .toastui-editor-file-name.has-file{color:#333}.toastui-editor-popup-add-image .toastui-editor-file-select-button{width:33%;margin-left:5px;height:32px;border-radius:2px;border:1px solid #dadde6;background-color:#f7f9fc;vertical-align:top}.toastui-editor-popup-add-image .toastui-editor-file-select-button:hover{border-color:#cbcfdb}.toastui-editor-popup-add-table{width:auto}.toastui-editor-popup-add-table .toastui-editor-table-selection{position:relative}.toastui-editor-popup-add-table .toastui-editor-table-cell{display:table-cell;width:20px;height:20px;border:1px solid #e1e3e9;background:#fff;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-popup-add-table .toastui-editor-table-cell.header{background:#f7f9fc}.toastui-editor-popup-add-table .toastui-editor-table-row{display:table-row}.toastui-editor-popup-add-table .toastui-editor-table{display:table;border-collapse:collapse}.toastui-editor-popup-add-table .toastui-editor-table-selection-layer{position:absolute;top:0;left:0;border:1px solid #00a9ff;background:rgba(0,169,255,.1);z-index:30}.toastui-editor-popup-add-table .toastui-editor-table-description{margin:5px 0 0;text-align:center;color:#333}.toastui-editor-popup-add-heading{width:auto}.toastui-editor-popup-add-heading .toastui-editor-popup-body{padding:0}.toastui-editor-popup-add-heading h1,.toastui-editor-popup-add-heading h2,.toastui-editor-popup-add-heading h3,.toastui-editor-popup-add-heading h4,.toastui-editor-popup-add-heading h5,.toastui-editor-popup-add-heading h6,.toastui-editor-popup-add-heading p,.toastui-editor-popup-add-heading ul{padding:0;margin:0}.toastui-editor-popup-add-heading ul{padding:5px 0;list-style:none}.toastui-editor-popup-add-heading ul li{padding:4px 12px;cursor:pointer}.toastui-editor-popup-add-heading ul li:hover{background-color:#dff4ff}.toastui-editor-popup-add-heading h1{font-size:24px}.toastui-editor-popup-add-heading h2{font-size:22px}.toastui-editor-popup-add-heading h3{font-size:20px}.toastui-editor-popup-add-heading h4{font-size:18px}.toastui-editor-popup-add-heading h5{font-size:16px}.toastui-editor-popup-add-heading h6{font-size:14px}.toastui-editor-context-menu{position:absolute;width:auto;min-width:197px;color:#333;border-radius:2px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.08);box-shadow:0 2px 4px 0 rgba(0,0,0,.08);border:1px solid #dadde6;z-index:30;padding:5px 0;background-color:#fff}.toastui-editor-context-menu .menu-group{list-style:none;border-bottom:1px solid #ebedf2;padding:0;margin:0;font-size:13px}.toastui-editor-context-menu .menu-group:last-child{border-bottom:none!important}.toastui-editor-context-menu .menu-item{height:32px;line-height:32px;padding:0 14px;cursor:pointer}.toastui-editor-context-menu span{display:inline-block}.toastui-editor-context-menu span:before{background:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") no-repeat;background-size:466px 146px;content:\\\"\\\";width:20px;height:20px;display:inline-block;vertical-align:middle;margin-right:10px}.toastui-editor-context-menu .add-row-up:before{background-position:3px -104px}.toastui-editor-context-menu .add-row-down:before{background-position:-19px -104px}.toastui-editor-context-menu .remove-row:before{background-position:-41px -104px}.toastui-editor-context-menu .add-column-left:before{background-position:-63px -104px}.toastui-editor-context-menu .add-column-right:before{background-position:-85px -104px}.toastui-editor-context-menu .remove-column:before{background-position:-111px -104px}.toastui-editor-context-menu .align-column-left:before{background-position:-129px -104px}.toastui-editor-context-menu .align-column-center:before{background-position:-151px -104px}.toastui-editor-context-menu .align-column-right:before{background-position:-173px -104px}.toastui-editor-context-menu .remove-table:before{background-position:-197px -104px}.toastui-editor-context-menu .disabled span:before{opacity:.3}.toastui-editor-context-menu li:not(.disabled):hover{background-color:#dff4ff}.toastui-editor-context-menu li.disabled{color:#c9ccd5}.toastui-editor-tooltip{position:absolute;background-color:#444;z-index:40;padding:4px 7px;font-size:12px;border-radius:3px;color:#fff;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,나눔바른고딕,Nanum Barun Gothic,맑은고딕,Malgun Gothic,sans-serif}.toastui-editor-tooltip .arrow{content:\\\"\\\";display:inline-block;width:10px;height:10px;background-color:#444;-webkit-transform:rotate(45deg);transform:rotate(45deg);position:absolute;top:-3px;left:6px;z-index:-1}.toastui-editor-toolbar-icons{background:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") no-repeat;background-size:466px 146px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.toastui-editor-context-menu span:before,.toastui-editor-toolbar-icons{background:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") no-repeat;background-size:466px 146px}}.toastui-editor-toolbar-icons{background-position-y:3px}.toastui-editor-toolbar-icons:disabled{opacity:.3}.toastui-editor-toolbar-icons.heading{background-position-x:3px}.toastui-editor-toolbar-icons.bold{background-position-x:-23px}.toastui-editor-toolbar-icons.italic{background-position-x:-49px}.toastui-editor-toolbar-icons.strike{background-position-x:-75px}.toastui-editor-toolbar-icons.hrline{background-position-x:-101px}.toastui-editor-toolbar-icons.quote{background-position-x:-127px}.toastui-editor-toolbar-icons.bullet-list{background-position-x:-153px}.toastui-editor-toolbar-icons.ordered-list{background-position-x:-179px}.toastui-editor-toolbar-icons.task-list{background-position-x:-205px}.toastui-editor-toolbar-icons.indent{background-position-x:-231px}.toastui-editor-toolbar-icons.outdent{background-position-x:-257px}.toastui-editor-toolbar-icons.table{background-position-x:-283px}.toastui-editor-toolbar-icons.image{background-position-x:-309px}.toastui-editor-toolbar-icons.link{background-position-x:-334px}.toastui-editor-toolbar-icons.code{background-position-x:-361px}.toastui-editor-toolbar-icons.codeblock{background-position-x:-388px}.toastui-editor-toolbar-icons.more{background-position-x:-412px}.toastui-editor-toolbar-icons:not(:disabled).active{background-position-y:-23px}@media only screen and (max-width:480px){.toastui-editor-popup{max-width:300px;margin-left:-150px}.toastui-editor-dropdown-toolbar{max-width:none}}.ProseMirror{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,나눔바른고딕,Nanum Barun Gothic,맑은고딕,Malgun Gothic,sans-serif;color:#222;font-size:13px;overflow-y:auto;overflow-X:hidden;height:calc(100% - 36px)}.ProseMirror .placeholder{color:#999}.ProseMirror-selectednode,.ProseMirror:focus{outline:none}.html-block.ProseMirror-selectednode,table.ProseMirror-selectednode{border-radius:2px;outline:2px solid #00a9ff}.toastui-editor-contents{margin:0;padding:0;font-size:13px;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,나눔바른고딕,Nanum Barun Gothic,맑은고딕,Malgun Gothic,sans-serif;z-index:20}.toastui-editor-contents :not(table){line-height:160%;-webkit-box-sizing:content-box;box-sizing:content-box}.toastui-editor-contents address,.toastui-editor-contents cite,.toastui-editor-contents dfn,.toastui-editor-contents em,.toastui-editor-contents i,.toastui-editor-contents var{font-style:italic}.toastui-editor-contents strong{font-weight:700}.toastui-editor-contents p{margin:10px 0;color:#222}.toastui-editor-contents>div>div:first-of-type h1,.toastui-editor-contents>h1:first-of-type{margin-top:14px}.toastui-editor-contents h1,.toastui-editor-contents h2,.toastui-editor-contents h3,.toastui-editor-contents h4,.toastui-editor-contents h5,.toastui-editor-contents h6{font-weight:700;color:#222}.toastui-editor-contents h1{font-size:24px;line-height:28px;border-bottom:3px double #999;margin:52px 0 15px 0;padding-bottom:7px}.toastui-editor-contents h2{font-size:22px;line-height:23px;border-bottom:1px solid #dbdbdb;margin:20px 0 13px 0;padding-bottom:7px}.toastui-editor-contents h3{font-size:20px;margin:18px 0 2px}.toastui-editor-contents h4{font-size:18px;margin:10px 0 2px}.toastui-editor-contents h3,.toastui-editor-contents h4{line-height:18px}.toastui-editor-contents h5{font-size:16px}.toastui-editor-contents h6{font-size:14px}.toastui-editor-contents h5,.toastui-editor-contents h6{line-height:17px;margin:9px 0 -4px}.toastui-editor-contents del{color:#999}.toastui-editor-contents blockquote{margin:14px 0;border-left:4px solid #e5e5e5;padding:0 16px;color:#999}.toastui-editor-contents blockquote ol,.toastui-editor-contents blockquote p,.toastui-editor-contents blockquote ul{color:#999}.toastui-editor-contents blockquote>:first-child{margin-top:0}.toastui-editor-contents blockquote>:last-child{margin-bottom:0}.toastui-editor-contents code,.toastui-editor-contents pre{font-family:Consolas,Courier,Apple SD 산돌고딕 Neo,-apple-system,Lucida Grande,Apple SD Gothic Neo,맑은 고딕,Malgun Gothic,Segoe UI,돋움,dotum,sans-serif;border:0;border-radius:0}.toastui-editor-contents pre{margin:2px 0 8px;padding:18px;background-color:#f4f7f8}.toastui-editor-contents code{color:#c1798b;background-color:#f9f2f4;padding:2px 3px;letter-spacing:-.3px;border-radius:2px}.toastui-editor-contents pre code{padding:0;color:inherit;white-space:pre-wrap;background-color:transparent}.toastui-editor-contents img{margin:4px 0 10px;-webkit-box-sizing:border-box;box-sizing:border-box;vertical-align:top;max-width:100%}.toastui-editor-contents table{border:1px solid rgba(0,0,0,.1);margin:12px 0 14px;color:#222;width:auto;border-collapse:collapse;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-contents table td,.toastui-editor-contents table th{border:1px solid rgba(0,0,0,.1);padding:5px 14px 5px 12px;height:32px}.toastui-editor-contents table th{background-color:#555;font-weight:300;color:#fff;padding-top:6px}.toastui-editor-contents th p{margin:0;color:#fff}.toastui-editor-contents td p{margin:0;padding:0 2px}.toastui-editor-contents td.toastui-editor-cell-selected{background-color:#d8dfec}.toastui-editor-contents th.toastui-editor-cell-selected{background-color:#908f8f}.toastui-editor-contents dir,.toastui-editor-contents menu,.toastui-editor-contents ol,.toastui-editor-contents ul{display:block;list-style-type:none;padding-left:24px;margin:6px 0 10px;color:#222}.toastui-editor-contents ol{list-style-type:none;counter-reset:li}.toastui-editor-contents ol>li{counter-increment:li}.toastui-editor-contents ol>li:before,.toastui-editor-contents ul>li:before{display:inline-block;position:absolute}.toastui-editor-contents ul>li:before{content:\\\"\\\";margin-top:6px;margin-left:-17px;width:5px;height:5px;border-radius:50%;background-color:#ccc}.toastui-editor-contents ol>li:before{content:\\\".\\\" counter(li);margin-left:-28px;width:24px;text-align:right;direction:rtl;color:#aaa}.toastui-editor-contents ol ol,.toastui-editor-contents ol ul,.toastui-editor-contents ul ol,.toastui-editor-contents ul ul{margin-top:0!important;margin-bottom:0!important}.toastui-editor-contents ol li,.toastui-editor-contents ul li{position:relative}.toastui-editor-contents ol p,.toastui-editor-contents ul p{margin:0}.toastui-editor-contents hr{border-top:1px solid #eee;margin:16px 0}.toastui-editor-contents a{text-decoration:underline;color:#4b96e6}.toastui-editor-contents a:hover{color:#1f70de}.toastui-editor-contents .image-link{position:relative}.toastui-editor-contents .image-link:hover:before{content:\\\"\\\";position:absolute;width:30px;height:30px;right:0;border-radius:50%;border:1px solid #c9ccd5;background:#fff url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") no-repeat;background-position:50%;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.08);box-shadow:0 2px 4px 0 rgba(0,0,0,.08);cursor:pointer}.toastui-editor-contents .task-list-item{border:0;list-style:none;padding-left:24px;margin-left:-24px}.toastui-editor-contents .task-list-item:before{background-repeat:no-repeat;background-size:18px 18px;background-position:50%;content:\\\"\\\";margin-left:0;margin-top:0;border-radius:2px;height:18px;width:18px;position:absolute;left:0;top:1px;cursor:pointer;background:transparent url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \")}.toastui-editor-contents .task-list-item.checked:before{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \")}.toastui-editor-custom-block .toastui-editor-custom-block-editor{background:#f9f7fd;color:#452d6b;border:1px solid #dbd4ea}.toastui-editor-custom-block .toastui-editor-custom-block-view{position:relative;padding:9px 13px 8px 12px}.toastui-editor-custom-block.ProseMirror-selectednode .toastui-editor-custom-block-view{border:1px solid #dbd4ea;border-radius:2px}.toastui-editor-custom-block .toastui-editor-custom-block-view .tool{position:absolute;right:10px;top:7px;display:none}.toastui-editor-custom-block.ProseMirror-selectednode .toastui-editor-custom-block-view .tool{display:block}.toastui-editor-custom-block-view button{vertical-align:middle;width:15px;height:15px;margin-left:8px;padding:3px;border:1px solid #ccc;background:url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \") no-repeat;background-position:50%;background-size:30px 30px}.toastui-editor-custom-block-view .info{font-size:13px;font-weight:700;color:#5200d0;vertical-align:middle}.toastui-editor-contents .toastui-editor-ww-code-block{position:relative}.toastui-editor-contents .toastui-editor-ww-code-block:after{content:attr(data-language);position:absolute;display:inline-block;top:10px;right:10px;height:24px;padding:3px 35px 0 10px;font-weight:700;font-size:13px;color:#333;background:#e5e9ea url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \") no-repeat;background-position:100%;border-radius:2px;background-size:30px 30px;cursor:pointer}.toastui-editor-ww-code-block-language{position:fixed;display:inline-block;width:100px;height:27px;right:35px;border:1px solid #ccc;border-radius:2px;background-color:#fff;z-index:30}.toastui-editor-ww-code-block-language input{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0 10px;height:100%;width:100%;background-color:transparent;border:none;outline:none}.toastui-editor-contents-placeholder:before{content:attr(data-placeholder);color:grey;line-height:160%;position:absolute}.toastui-editor-md-preview .toastui-editor-contents h1{min-height:28px}.toastui-editor-md-preview .toastui-editor-contents h2{min-height:23px}.toastui-editor-md-preview .toastui-editor-contents blockquote{min-height:20px}.toastui-editor-md-preview .toastui-editor-contents li{min-height:22px}.toastui-editor-pseudo-clipboard{position:fixed;opacity:0;width:0;height:0;left:-1000px;top:-1000px;z-index:-1}.toastui-editor-contents .toastui-editor-md-preview-highlight{position:relative;z-index:0}.toastui-editor-contents .toastui-editor-md-preview-highlight:after{content:\\\"\\\";background-color:rgba(255,245,131,.5);border-radius:4px;z-index:-1;position:absolute;top:-4px;right:-4px;left:-4px;bottom:-4px}.toastui-editor-contents h1.toastui-editor-md-preview-highlight:after,.toastui-editor-contents h2.toastui-editor-md-preview-highlight:after{bottom:0}.toastui-editor-contents td.toastui-editor-md-preview-highlight:after,.toastui-editor-contents th.toastui-editor-md-preview-highlight:after{display:none}.toastui-editor-contents td.toastui-editor-md-preview-highlight,.toastui-editor-contents th.toastui-editor-md-preview-highlight{background-color:rgba(255,245,131,.5)}.toastui-editor-contents th.toastui-editor-md-preview-highlight{color:#222}.toastui-editor-md-heading1{font-size:24px}.toastui-editor-md-heading2{font-size:22px}.toastui-editor-md-heading3{font-size:20px}.toastui-editor-md-heading4{font-size:18px}.toastui-editor-md-heading5{font-size:16px}.toastui-editor-md-heading6{font-size:14px}.toastui-editor-md-heading.toastui-editor-md-delimiter.setext{line-height:15px}.toastui-editor-md-heading,.toastui-editor-md-list-item .toastui-editor-md-meta,.toastui-editor-md-list-item-style,.toastui-editor-md-strong{font-weight:700}.toastui-editor-md-emph{font-style:italic}.toastui-editor-md-strike{text-decoration:line-through}.toastui-editor-md-strike.toastui-editor-md-delimiter{text-decoration:none}.toastui-editor-md-block-quote,.toastui-editor-md-delimiter,.toastui-editor-md-link,.toastui-editor-md-table,.toastui-editor-md-thematic-break{color:#ccc}.toastui-editor-md-code.toastui-editor-md-delimiter{color:#aaa}.toastui-editor-md-html,.toastui-editor-md-link.toastui-editor-md-link-url.toastui-editor-md-marked-text,.toastui-editor-md-meta{color:#999}.toastui-editor-md-block-quote .toastui-editor-md-marked-text,.toastui-editor-md-list-item .toastui-editor-md-meta{color:#555}.toastui-editor-md-table .toastui-editor-md-table-cell{color:#222}.toastui-editor-md-link.toastui-editor-md-link-desc.toastui-editor-md-marked-text,.toastui-editor-md-list-item-style.toastui-editor-md-list-item-odd{color:#4b96e6}.toastui-editor-md-list-item-style.toastui-editor-md-list-item-even{color:#cb4848}.toastui-editor-md-code.toastui-editor-md-marked-text{color:#c1798b}.toastui-editor-md-code{background-color:rgba(243,229,233,.5);padding:2px 0;letter-spacing:-.3px}.toastui-editor-md-code.toastui-editor-md-start{padding-left:2px;border-top-left-radius:2px;border-bottom-left-radius:2px}.toastui-editor-md-code.toastui-editor-md-end{padding-right:2px;border-top-right-radius:2px;border-bottom-right-radius:2px}.toastui-editor-md-code-block-line-background{background-color:#f5f7f8}.toastui-editor-md-code-block-line-background.start,.toastui-editor-md-custom-block-line-background.start{margin-top:2px}.toastui-editor-md-code,.toastui-editor-md-code-block{font-family:Consolas,Courier,Lucida Grande,나눔바른고딕,Nanum Barun Gothic,맑은고딕,Malgun Gothic,sans-serif}.toastui-editor-md-custom-block{color:#452d6b}.toastui-editor-md-custom-block-line-background{background-color:#f9f7fd}.toastui-editor-md-custom-block .toastui-editor-md-delimiter{color:#b8b3c0}.toastui-editor-md-custom-block .toastui-editor-md-meta{color:#5200d0}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};","\"use strict\";\n\nmodule.exports = function (i) {\n return i[1];\n};","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","var wgs84 = require('wgs84');\n\nmodule.exports.geometry = geometry;\nmodule.exports.ring = ringArea;\n\nfunction geometry(_) {\n var area = 0, i;\n switch (_.type) {\n case 'Polygon':\n return polygonArea(_.coordinates);\n case 'MultiPolygon':\n for (i = 0; i < _.coordinates.length; i++) {\n area += polygonArea(_.coordinates[i]);\n }\n return area;\n case 'Point':\n case 'MultiPoint':\n case 'LineString':\n case 'MultiLineString':\n return 0;\n case 'GeometryCollection':\n for (i = 0; i < _.geometries.length; i++) {\n area += geometry(_.geometries[i]);\n }\n return area;\n }\n}\n\nfunction polygonArea(coords) {\n var area = 0;\n if (coords && coords.length > 0) {\n area += Math.abs(ringArea(coords[0]));\n for (var i = 1; i < coords.length; i++) {\n area -= Math.abs(ringArea(coords[i]));\n }\n }\n return area;\n}\n\n/**\n * Calculate the approximate area of the polygon were it projected onto\n * the earth. Note that this area will be positive if ring is oriented\n * clockwise, otherwise it will be negative.\n *\n * Reference:\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409\n *\n * Returns:\n * {float} The approximate signed geodesic area of the polygon in square\n * meters.\n */\n\nfunction ringArea(coords) {\n var p1, p2, p3, lowerIndex, middleIndex, upperIndex,\n area = 0,\n coordsLength = coords.length;\n\n if (coordsLength > 2) {\n for (i = 0; i < coordsLength; i++) {\n if (i === coordsLength - 2) {// i = N-2\n lowerIndex = coordsLength - 2;\n middleIndex = coordsLength -1;\n upperIndex = 0;\n } else if (i === coordsLength - 1) {// i = N-1\n lowerIndex = coordsLength - 1;\n middleIndex = 0;\n upperIndex = 1;\n } else { // i = 0 to N-3\n lowerIndex = i;\n middleIndex = i+1;\n upperIndex = i+2;\n }\n p1 = coords[lowerIndex];\n p2 = coords[middleIndex];\n p3 = coords[upperIndex];\n area += ( rad(p3[0]) - rad(p1[0]) ) * Math.sin( rad(p2[1]));\n }\n\n area = area * wgs84.RADIUS * wgs84.RADIUS / 2;\n }\n\n return area;\n}\n\nfunction rad(_) {\n return _ * Math.PI / 180;\n}","module.exports = normalize;\n\nvar types = {\n Point: 'geometry',\n MultiPoint: 'geometry',\n LineString: 'geometry',\n MultiLineString: 'geometry',\n Polygon: 'geometry',\n MultiPolygon: 'geometry',\n GeometryCollection: 'geometry',\n Feature: 'feature',\n FeatureCollection: 'featurecollection'\n};\n\n/**\n * Normalize a GeoJSON feature into a FeatureCollection.\n *\n * @param {object} gj geojson data\n * @returns {object} normalized geojson data\n */\nfunction normalize(gj) {\n if (!gj || !gj.type) return null;\n var type = types[gj.type];\n if (!type) return null;\n\n if (type === 'geometry') {\n return {\n type: 'FeatureCollection',\n features: [{\n type: 'Feature',\n properties: {},\n geometry: gj\n }]\n };\n } else if (type === 'feature') {\n return {\n type: 'FeatureCollection',\n features: [gj]\n };\n } else if (type === 'featurecollection') {\n return gj;\n }\n}\n","module.exports = function() {\n throw new Error('call .point() or .polygon() instead');\n};\n\nfunction position(bbox) {\n if (bbox) return coordInBBBOX(bbox);\n else return [lon(), lat()];\n}\n\nmodule.exports.position = position;\n\nmodule.exports.point = function(count, bbox) {\n var features = [];\n for (i = 0; i < count; i++) {\n features.push(feature(bbox ? point(position(bbox)) : point()));\n }\n return collection(features);\n};\n\nmodule.exports.polygon = function(count, num_vertices, max_radial_length, bbox) {\n if (typeof num_vertices !== 'number') num_vertices = 10;\n if (typeof max_radial_length !== 'number') max_radial_length = 10;\n var features = [];\n for (i = 0; i < count; i++) {\n var vertices = [],\n circle_offsets = Array.apply(null,\n new Array(num_vertices + 1)).map(Math.random);\n\n circle_offsets.forEach(sumOffsets);\n circle_offsets.forEach(scaleOffsets);\n vertices[vertices.length - 1] = vertices[0]; // close the ring\n\n // center the polygon around something\n vertices = vertices.map(vertexToCoordinate(position(bbox)));\n features.push(feature(polygon([vertices])));\n }\n\n function sumOffsets(cur, index, arr) {\n arr[index] = (index > 0) ? cur + arr[index - 1] : cur;\n }\n\n function scaleOffsets(cur, index) {\n cur = cur * 2 * Math.PI / circle_offsets[circle_offsets.length - 1];\n var radial_scaler = Math.random();\n vertices.push([\n radial_scaler * max_radial_length * Math.sin(cur),\n radial_scaler * max_radial_length * Math.cos(cur)\n ]);\n }\n\n return collection(features);\n};\n\n\nfunction vertexToCoordinate(hub) {\n return function(cur, index) { return [cur[0] + hub[0], cur[1] + hub[1]]; };\n}\n\nfunction rnd() { return Math.random() - 0.5; }\nfunction lon() { return rnd() * 360; }\nfunction lat() { return rnd() * 180; }\n\nfunction point(coordinates) {\n return {\n type: 'Point',\n coordinates: coordinates || [lon(), lat()]\n };\n}\n\nfunction coordInBBBOX(bbox) {\n return [\n (Math.random() * (bbox[2] - bbox[0])) + bbox[0],\n (Math.random() * (bbox[3] - bbox[1])) + bbox[1]];\n}\n\nfunction pointInBBBOX() {\n return {\n type: 'Point',\n coordinates: [lon(), lat()]\n };\n}\n\nfunction polygon(coordinates) {\n return {\n type: 'Polygon',\n coordinates: coordinates\n };\n}\n\nfunction feature(geom) {\n return {\n type: 'Feature',\n geometry: geom,\n properties: {}\n };\n}\n\nfunction collection(f) {\n return {\n type: 'FeatureCollection',\n features: f\n };\n}\n","\"use strict\"\n\n//High level idea:\n// 1. Use Clarkson's incremental construction to find convex hull\n// 2. Point location in triangulation by jump and walk\n\nmodule.exports = incrementalConvexHull\n\nvar orient = require(\"robust-orientation\")\nvar compareCell = require(\"simplicial-complex\").compareCells\n\nfunction compareInt(a, b) {\n return a - b\n}\n\nfunction Simplex(vertices, adjacent, boundary) {\n this.vertices = vertices\n this.adjacent = adjacent\n this.boundary = boundary\n this.lastVisited = -1\n}\n\nSimplex.prototype.flip = function() {\n var t = this.vertices[0]\n this.vertices[0] = this.vertices[1]\n this.vertices[1] = t\n var u = this.adjacent[0]\n this.adjacent[0] = this.adjacent[1]\n this.adjacent[1] = u\n}\n\nfunction GlueFacet(vertices, cell, index) {\n this.vertices = vertices\n this.cell = cell\n this.index = index\n}\n\nfunction compareGlue(a, b) {\n return compareCell(a.vertices, b.vertices)\n}\n\nfunction bakeOrient(d) {\n var code = [\"function orient(){var tuple=this.tuple;return test(\"]\n for(var i=0; i<=d; ++i) {\n if(i > 0) {\n code.push(\",\")\n }\n code.push(\"tuple[\", i, \"]\")\n }\n code.push(\")}return orient\")\n var proc = new Function(\"test\", code.join(\"\"))\n var test = orient[d+1]\n if(!test) {\n test = orient\n }\n return proc(test)\n}\n\nvar BAKED = []\n\nfunction Triangulation(dimension, vertices, simplices) {\n this.dimension = dimension\n this.vertices = vertices\n this.simplices = simplices\n this.interior = simplices.filter(function(c) {\n return !c.boundary\n })\n\n this.tuple = new Array(dimension+1)\n for(var i=0; i<=dimension; ++i) {\n this.tuple[i] = this.vertices[i]\n }\n\n var o = BAKED[dimension]\n if(!o) {\n o = BAKED[dimension] = bakeOrient(dimension)\n }\n this.orient = o\n}\n\nvar proto = Triangulation.prototype\n\n//Degenerate situation where we are on boundary, but coplanar to face\nproto.handleBoundaryDegeneracy = function(cell, point) {\n var d = this.dimension\n var n = this.vertices.length - 1\n var tuple = this.tuple\n var verts = this.vertices\n\n //Dumb solution: Just do dfs from boundary cell until we find any peak, or terminate\n var toVisit = [ cell ]\n cell.lastVisited = -n\n while(toVisit.length > 0) {\n cell = toVisit.pop()\n var cellVerts = cell.vertices\n var cellAdj = cell.adjacent\n for(var i=0; i<=d; ++i) {\n var neighbor = cellAdj[i]\n if(!neighbor.boundary || neighbor.lastVisited <= -n) {\n continue\n }\n var nv = neighbor.vertices\n for(var j=0; j<=d; ++j) {\n var vv = nv[j]\n if(vv < 0) {\n tuple[j] = point\n } else {\n tuple[j] = verts[vv]\n }\n }\n var o = this.orient()\n if(o > 0) {\n return neighbor\n }\n neighbor.lastVisited = -n\n if(o === 0) {\n toVisit.push(neighbor)\n }\n }\n }\n return null\n}\n\nproto.walk = function(point, random) {\n //Alias local properties\n var n = this.vertices.length - 1\n var d = this.dimension\n var verts = this.vertices\n var tuple = this.tuple\n\n //Compute initial jump cell\n var initIndex = random ? (this.interior.length * Math.random())|0 : (this.interior.length-1)\n var cell = this.interior[ initIndex ]\n\n //Start walking\nouterLoop:\n while(!cell.boundary) {\n var cellVerts = cell.vertices\n var cellAdj = cell.adjacent\n\n for(var i=0; i<=d; ++i) {\n tuple[i] = verts[cellVerts[i]]\n }\n cell.lastVisited = n\n\n //Find farthest adjacent cell\n for(var i=0; i<=d; ++i) {\n var neighbor = cellAdj[i]\n if(neighbor.lastVisited >= n) {\n continue\n }\n var prev = tuple[i]\n tuple[i] = point\n var o = this.orient()\n tuple[i] = prev\n if(o < 0) {\n cell = neighbor\n continue outerLoop\n } else {\n if(!neighbor.boundary) {\n neighbor.lastVisited = n\n } else {\n neighbor.lastVisited = -n\n }\n }\n }\n return\n }\n\n return cell\n}\n\nproto.addPeaks = function(point, cell) {\n var n = this.vertices.length - 1\n var d = this.dimension\n var verts = this.vertices\n var tuple = this.tuple\n var interior = this.interior\n var simplices = this.simplices\n\n //Walking finished at boundary, time to add peaks\n var tovisit = [ cell ]\n\n //Stretch initial boundary cell into a peak\n cell.lastVisited = n\n cell.vertices[cell.vertices.indexOf(-1)] = n\n cell.boundary = false\n interior.push(cell)\n\n //Record a list of all new boundaries created by added peaks so we can glue them together when we are all done\n var glueFacets = []\n\n //Do a traversal of the boundary walking outward from starting peak\n while(tovisit.length > 0) {\n //Pop off peak and walk over adjacent cells\n var cell = tovisit.pop()\n var cellVerts = cell.vertices\n var cellAdj = cell.adjacent\n var indexOfN = cellVerts.indexOf(n)\n if(indexOfN < 0) {\n continue\n }\n\n for(var i=0; i<=d; ++i) {\n if(i === indexOfN) {\n continue\n }\n\n //For each boundary neighbor of the cell\n var neighbor = cellAdj[i]\n if(!neighbor.boundary || neighbor.lastVisited >= n) {\n continue\n }\n\n var nv = neighbor.vertices\n\n //Test if neighbor is a peak\n if(neighbor.lastVisited !== -n) { \n //Compute orientation of p relative to each boundary peak\n var indexOfNeg1 = 0\n for(var j=0; j<=d; ++j) {\n if(nv[j] < 0) {\n indexOfNeg1 = j\n tuple[j] = point\n } else {\n tuple[j] = verts[nv[j]]\n }\n }\n var o = this.orient()\n\n //Test if neighbor cell is also a peak\n if(o > 0) {\n nv[indexOfNeg1] = n\n neighbor.boundary = false\n interior.push(neighbor)\n tovisit.push(neighbor)\n neighbor.lastVisited = n\n continue\n } else {\n neighbor.lastVisited = -n\n }\n }\n\n var na = neighbor.adjacent\n\n //Otherwise, replace neighbor with new face\n var vverts = cellVerts.slice()\n var vadj = cellAdj.slice()\n var ncell = new Simplex(vverts, vadj, true)\n simplices.push(ncell)\n\n //Connect to neighbor\n var opposite = na.indexOf(cell)\n if(opposite < 0) {\n continue\n }\n na[opposite] = ncell\n vadj[indexOfN] = neighbor\n\n //Connect to cell\n vverts[i] = -1\n vadj[i] = cell\n cellAdj[i] = ncell\n\n //Flip facet\n ncell.flip()\n\n //Add to glue list\n for(var j=0; j<=d; ++j) {\n var uu = vverts[j]\n if(uu < 0 || uu === n) {\n continue\n }\n var nface = new Array(d-1)\n var nptr = 0\n for(var k=0; k<=d; ++k) {\n var vv = vverts[k]\n if(vv < 0 || k === j) {\n continue\n }\n nface[nptr++] = vv\n }\n glueFacets.push(new GlueFacet(nface, ncell, j))\n }\n }\n }\n\n //Glue boundary facets together\n glueFacets.sort(compareGlue)\n\n for(var i=0; i+1= 0) {\n bcell[ptr++] = cv[j]\n } else {\n parity = j&1\n }\n }\n if(parity === (d&1)) {\n var t = bcell[0]\n bcell[0] = bcell[1]\n bcell[1] = t\n }\n boundary.push(bcell)\n }\n }\n return boundary\n}\n\nfunction incrementalConvexHull(points, randomSearch) {\n var n = points.length\n if(n === 0) {\n throw new Error(\"Must have at least d+1 points\")\n }\n var d = points[0].length\n if(n <= d) {\n throw new Error(\"Must input at least d+1 points\")\n }\n\n //FIXME: This could be degenerate, but need to select d+1 non-coplanar points to bootstrap process\n var initialSimplex = points.slice(0, d+1)\n\n //Make sure initial simplex is positively oriented\n var o = orient.apply(void 0, initialSimplex)\n if(o === 0) {\n throw new Error(\"Input not in general position\")\n }\n var initialCoords = new Array(d+1)\n for(var i=0; i<=d; ++i) {\n initialCoords[i] = i\n }\n if(o < 0) {\n initialCoords[0] = 1\n initialCoords[1] = 0\n }\n\n //Create initial topological index, glue pointers together (kind of messy)\n var initialCell = new Simplex(initialCoords, new Array(d+1), false)\n var boundary = initialCell.adjacent\n var list = new Array(d+2)\n for(var i=0; i<=d; ++i) {\n var verts = initialCoords.slice()\n for(var j=0; j<=d; ++j) {\n if(j === i) {\n verts[j] = -1\n }\n }\n var t = verts[0]\n verts[0] = verts[1]\n verts[1] = t\n var cell = new Simplex(verts, new Array(d+1), true)\n boundary[i] = cell\n list[i] = cell\n }\n list[d+1] = initialCell\n for(var i=0; i<=d; ++i) {\n var verts = boundary[i].vertices\n var adj = boundary[i].adjacent\n for(var j=0; j<=d; ++j) {\n var v = verts[j]\n if(v < 0) {\n adj[j] = initialCell\n continue\n }\n for(var k=0; k<=d; ++k) {\n if(boundary[k].vertices.indexOf(v) < 0) {\n adj[j] = boundary[k]\n }\n }\n }\n }\n\n //Initialize triangles\n var triangles = new Triangulation(d, initialSimplex, list)\n\n //Insert remaining points\n var useRandom = !!randomSearch\n for(var i=d+1; i-1}function T(){}function P(t){this.str=t}function b(t){this.value=t}function O(){}function _(){if(this.hi=0,this.lo=0,0===arguments.length)this.init(0);else if(1===arguments.length){if(\"number\"==typeof arguments[0]){var t=arguments[0];this.init(t)}else if(arguments[0]instanceof _){var e=arguments[0];this.init(e)}else if(\"string\"==typeof arguments[0]){var n=arguments[0];_.call(this,_.parse(n))}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.init(i,r)}}function M(){}function D(){}function A(){}function F(){if(this.x=null,this.y=null,this.w=null,0===arguments.length)this.x=0,this.y=0,this.w=1;else if(1===arguments.length){var t=arguments[0];this.x=t.x,this.y=t.y,this.w=1}else if(2===arguments.length){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var e=arguments[0],n=arguments[1];this.x=e,this.y=n,this.w=1}else if(arguments[0]instanceof F&&arguments[1]instanceof F){var i=arguments[0],r=arguments[1];this.x=i.y*r.w-r.y*i.w,this.y=r.x*i.w-i.x*r.w,this.w=i.x*r.y-r.x*i.y}else if(arguments[0]instanceof g&&arguments[1]instanceof g){var s=arguments[0],o=arguments[1];this.x=s.y-o.y,this.y=o.x-s.x,this.w=s.x*o.y-o.x*s.y}}else if(3===arguments.length){var a=arguments[0],u=arguments[1],l=arguments[2];this.x=a,this.y=u,this.w=l}else if(4===arguments.length){var h=arguments[0],c=arguments[1],f=arguments[2],d=arguments[3],p=h.y-c.y,v=c.x-h.x,m=h.x*c.y-c.x*h.y,y=f.y-d.y,x=d.x-f.x,E=f.x*d.y-d.x*f.y;this.x=v*E-x*m,this.y=y*m-p*E,this.w=p*x-y*v}}function G(){}function q(){}function B(){this.envelope=null,this.factory=null,this.SRID=null,this.userData=null;var t=arguments[0];this.factory=t,this.SRID=t.getSRID()}function z(){}function V(){}function k(){}function Y(){}function U(){}function X(){}function H(){}function W(){}function j(){}function K(){}function Z(){}function Q(){}function J(){this.array_=[],arguments[0]instanceof v&&this.addAll(arguments[0])}function $(t){return null==t?$s:t.color}function tt(t){return null==t?null:t.parent}function et(t,e){null!==t&&(t.color=e)}function nt(t){return null==t?null:t.left}function it(t){return null==t?null:t.right}function rt(){this.root_=null,this.size_=0}function st(){}function ot(){}function at(){this.array_=[],arguments[0]instanceof v&&this.addAll(arguments[0])}function ut(){}function lt(){}function ht(){}function ct(){}function ft(){this.geometries=null;var t=arguments[0],e=arguments[1];if(B.call(this,e),null===t&&(t=[]),B.hasNullElements(t))throw new i(\"geometries must not contain null elements\");this.geometries=t}function gt(){var t=arguments[0],e=arguments[1];ft.call(this,t,e)}function dt(){if(this.geom=null,this.geomFact=null,this.bnRule=null,this.endpointMap=null,1===arguments.length){var t=arguments[0];dt.call(this,t,V.MOD2_BOUNDARY_RULE)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.geom=e,this.geomFact=e.getFactory(),this.bnRule=n}}function pt(){this.count=null}function vt(){}function mt(){}function yt(){}function xt(){}function Et(){}function It(){}function Nt(){}function Ct(){}function St(){this.points=null;var t=arguments[0],e=arguments[1];B.call(this,e),this.init(t)}function wt(){}function Lt(){this.coordinates=null;var t=arguments[0],e=arguments[1];B.call(this,e),this.init(t)}function Rt(){}function Tt(){this.shell=null,this.holes=null;var t=arguments[0],e=arguments[1],n=arguments[2];if(B.call(this,n),null===t&&(t=this.getFactory().createLinearRing()),null===e&&(e=[]),B.hasNullElements(e))throw new i(\"holes must not contain null elements\");if(t.isEmpty()&&B.hasNonEmptyElements(e))throw new i(\"shell is empty but holes are not\");this.shell=t,this.holes=e}function Pt(){var t=arguments[0],e=arguments[1];ft.call(this,t,e)}function bt(){if(arguments[0]instanceof g&&arguments[1]instanceof ie){var t=arguments[0],e=arguments[1];bt.call(this,e.getCoordinateSequenceFactory().create(t),e)}else if(R(arguments[0],D)&&arguments[1]instanceof ie){var n=arguments[0],i=arguments[1];St.call(this,n,i),this.validateConstruction()}}function Ot(){var t=arguments[0],e=arguments[1];ft.call(this,t,e)}function _t(){if(this.factory=null,this.isUserDataCopied=!1,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.factory=t}}function Mt(){}function Dt(){}function At(){}function Ft(){}function Gt(){if(this.dimension=3,this.coordinates=null,1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];Gt.call(this,t,3)}else if(Number.isInteger(arguments[0])){var e=arguments[0];this.coordinates=new Array(e).fill(null);for(var n=0;e>n;n++)this.coordinates[n]=new g}else if(R(arguments[0],D)){var i=arguments[0];if(null===i)return this.coordinates=new Array(0).fill(null),null;this.dimension=i.getDimension(),this.coordinates=new Array(i.size()).fill(null);for(var n=0;nn;n++)this.coordinates[n]=new g}}function qt(){}function Bt(t,e){return t===e||t!==t&&e!==e}function zt(t,e){function n(t){return this&&this.constructor===n?(this._keys=[],this._values=[],this._itp=[],this.objectOnly=e,void(t&&Vt.call(this,t))):new n(t)}return e||io(t,\"size\",{get:Jt}),t.constructor=n,n.prototype=t,n}function Vt(t){this.add?t.forEach(this.add,this):t.forEach(function(t){this.set(t[0],t[1])},this)}function kt(t){return this.has(t)&&(this._keys.splice(no,1),this._values.splice(no,1),this._itp.forEach(function(t){no-1}function Yt(t){return this.has(t)?this._values[no]:void 0}function Ut(t,e){if(this.objectOnly&&e!==Object(e))throw new TypeError(\"Invalid value used as weak collection key\");if(e!==e||0===e)for(no=t.length;no--&&!Bt(t[no],e););else no=t.indexOf(e);return no>-1}function Xt(t){return Ut.call(this,this._keys,t)}function Ht(t,e){return this.has(t)?this._values[no]=e:this._values[this._keys.push(t)-1]=e,this}function Wt(){(this._keys||0).length=this._values.length=0}function jt(){return Qt(this._itp,this._keys)}function Kt(){return Qt(this._itp,this._values)}function Zt(){return Qt(this._itp,this._keys,this._values)}function Qt(t,e,n){var i=[0],r=!1;return t.push(i),{next:function(){var s,o=i[0];return!r&&o1,\"Node capacity must be greater than 1\"),this.nodeCapacity=t}}function ze(){}function Ve(){}function ke(){if(0===arguments.length)ke.call(this,ke.DEFAULT_NODE_CAPACITY);else if(1===arguments.length){var t=arguments[0];Be.call(this,t)}}function Ye(){var t=arguments[0];Ge.call(this,t)}function Ue(){}function Xe(){this.segString=null,this.coord=null,this.segmentIndex=null,this.segmentOctant=null,this._isInterior=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this.segString=t,this.coord=new g(e),this.segmentIndex=n,this.segmentOctant=i,this._isInterior=!e.equals2D(t.getCoordinate(n))}function He(){this.nodeMap=new rt,this.edge=null;var t=arguments[0];this.edge=t}function We(){this.nodeList=null,this.edge=null,this.nodeIt=null,this.currNode=null,this.nextNode=null,this.currSegIndex=0;var t=arguments[0];this.nodeList=t,this.edge=t.getEdge(),this.nodeIt=t.iterator(),this.readNextNode()}function je(){}function Ke(){this.nodeList=new He(this),this.pts=null,this.data=null;var t=arguments[0],e=arguments[1];this.pts=t,this.data=e}function Ze(){this.tempEnv1=new C,this.tempEnv2=new C,this.overlapSeg1=new ce,this.overlapSeg2=new ce}function Qe(){this.pts=null,this.start=null,this.end=null,this.env=null,this.context=null,this.id=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this.pts=t,this.start=e,this.end=n,this.context=i}function Je(){}function $e(){}function tn(){}function en(){if(this.segInt=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.setSegmentIntersector(t)}}function nn(){if(this.monoChains=new I,this.index=new ke,this.idCounter=0,this.nodedSegStrings=null,this.nOverlaps=0,0===arguments.length);else if(1===arguments.length){var t=arguments[0];en.call(this,t)}}function rn(){Ze.apply(this),this.si=null;var t=arguments[0];this.si=t}function sn(){if(this.pt=null,1===arguments.length){var t=arguments[0];l.call(this,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];l.call(this,sn.msgWithCoord(e,n)),this.pt=new g(n)}}function on(){}function an(){this.findAllIntersections=!1,this.isCheckEndSegmentsOnly=!1,this.li=null,this.interiorIntersection=null,this.intSegments=null,this.intersections=new I,this.intersectionCount=0,this.keepIntersections=!0;var t=arguments[0];this.li=t,this.interiorIntersection=null}function un(){this.li=new ae,this.segStrings=null,this.findAllIntersections=!1,this.segInt=null,this._isValid=!0;var t=arguments[0];this.segStrings=t}function ln(){this.nv=null;var t=arguments[0];this.nv=new un(ln.toSegmentStrings(t))}function hn(){this.mapOp=null;var t=arguments[0];this.mapOp=t}function cn(){}function fn(){if(this.location=null,1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];this.init(t.length)}else if(Number.isInteger(arguments[0])){var e=arguments[0];this.init(1),this.location[cn.ON]=e}else if(arguments[0]instanceof fn){var n=arguments[0];if(this.init(n.location.length),null!==n)for(var i=0;it;t++)for(var e=0;3>e;e++)this.depth[t][e]=Qn.NULL_VALUE}function Jn(){if(mn.apply(this),this.pts=null,this.env=null,this.eiList=new jn(this),this.name=null,this.mce=null,this._isIsolated=!0,this.depth=new Qn,this.depthDelta=0,1===arguments.length){var t=arguments[0];Jn.call(this,t,null)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.pts=e,this.label=n}}function $n(){if(Cn.apply(this),this.parentGeom=null,this.lineEdgeMap=new te,this.boundaryNodeRule=null,this.useBoundaryDeterminationRule=!0,this.argIndex=null,this.boundaryNodes=null,this._hasTooFewPoints=!1,this.invalidPoint=null,this.areaPtLocator=null,this.ptLocator=new Te,2===arguments.length){var t=arguments[0],e=arguments[1];$n.call(this,t,e,V.OGC_SFS_BOUNDARY_RULE)}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this.argIndex=n,this.parentGeom=i,this.boundaryNodeRule=r,null!==i&&this.add(i)}}function ti(){if(this.li=new ae,this.resultPrecisionModel=null,this.arg=null,1===arguments.length){var t=arguments[0];this.setComputationPrecision(t.getPrecisionModel()),this.arg=new Array(1).fill(null),this.arg[0]=new $n(0,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];ti.call(this,e,n,V.OGC_SFS_BOUNDARY_RULE)}else if(3===arguments.length){var i=arguments[0],r=arguments[1],s=arguments[2];i.getPrecisionModel().compareTo(r.getPrecisionModel())>=0?this.setComputationPrecision(i.getPrecisionModel()):this.setComputationPrecision(r.getPrecisionModel()),this.arg=new Array(2).fill(null),this.arg[0]=new $n(0,i,s),this.arg[1]=new $n(1,r,s)}}function ei(){this.pts=null,this._orientation=null;var t=arguments[0];this.pts=t,this._orientation=ei.orientation(t)}function ni(){this.edges=new I,this.ocaMap=new rt}function ii(){this.ptLocator=new Te,this.geomFact=null,this.resultGeom=null,this.graph=null,this.edgeList=new ni,this.resultPolyList=new I,this.resultLineList=new I,this.resultPointList=new I;var t=arguments[0],e=arguments[1];ti.call(this,t,e),this.graph=new Cn(new On),this.geomFact=t.getFactory()}function ri(){this.geom=new Array(2).fill(null),this.snapTolerance=null,this.cbr=null;var t=arguments[0],e=arguments[1];this.geom[0]=t,this.geom[1]=e,this.computeSnapTolerance()}function si(){this.geom=new Array(2).fill(null);var t=arguments[0],e=arguments[1];this.geom[0]=t,this.geom[1]=e}function oi(){this.factory=null,this.interiorPoint=null,this.maxWidth=0;var t=arguments[0];this.factory=t.getFactory(),this.add(t)}function ai(){this.poly=null,this.centreY=null,this.hiY=r.MAX_VALUE,this.loY=-r.MAX_VALUE;var t=arguments[0];this.poly=t,this.hiY=t.getEnvelopeInternal().getMaxY(),this.loY=t.getEnvelopeInternal().getMinY(),this.centreY=oi.avg(this.loY,this.hiY)}function ui(){this.centroid=null,this.minDistance=r.MAX_VALUE,this.interiorPoint=null;var t=arguments[0];this.centroid=t.getCentroid().getCoordinate(),this.addInterior(t),null===this.interiorPoint&&this.addEndpoints(t)}function li(){this.centroid=null,this.minDistance=r.MAX_VALUE,this.interiorPoint=null;var t=arguments[0];this.centroid=t.getCentroid().getCoordinate(),this.add(t)}function hi(){}function ci(){this.p0=null,this.p1=null,this.p2=null;var t=arguments[0],e=arguments[1],n=arguments[2];this.p0=t,this.p1=e,this.p2=n}function fi(){this.input=null,this.extremalPts=null,this.centre=null,this.radius=0;var t=arguments[0];this.input=t}function gi(){if(this.inputGeom=null,this.isConvex=null,this.convexHullPts=null,this.minBaseSeg=new ce,this.minWidthPt=null,this.minPtIndex=null,this.minWidth=0,1===arguments.length){var t=arguments[0];gi.call(this,t,!1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.inputGeom=e,this.isConvex=n}}function di(){this.inputGeom=null,this.distanceTolerance=null;var t=arguments[0];this.inputGeom=t}function pi(){xe.apply(this),this.distanceTolerance=null;var t=arguments[0];this.distanceTolerance=t}function vi(){this._orig=null,this._sym=null,this._next=null;var t=arguments[0];this._orig=t}function mi(){this._isMarked=!1;var t=arguments[0];vi.call(this,t)}function yi(){this.vertexMap=new te}function xi(){this._isStart=!1;var t=arguments[0];mi.call(this,t)}function Ei(){yi.apply(this)}function Ii(){this.result=null,this.factory=null,this.graph=null,this.lines=new I,this.nodeEdgeStack=new pe,this.ringStartEdge=null,this.graph=new Ei}function Ni(){this.items=new I,this.subnode=new Array(4).fill(null)}function Ci(){}function Si(t,e){var n,i,r,s,o={32:{d:127,c:128,b:0,a:0},64:{d:32752,c:0,b:0,a:0}},a={32:8,64:11}[t];if(s||(n=0>e||0>1/e,isFinite(e)||(s=o[t],n&&(s.d+=1<=2;)i++,r/=2;for(;1>r&&i>0;)i--,r*=2;0>=i&&(r/=2),32===t&&i>254&&(s={d:n?255:127,c:128,b:0,a:0},i=Math.pow(2,a)-1,r=0)}return i}function wi(){this.pt=new g,this.level=0,this.env=null;var t=arguments[0];this.computeKey(t)}function Li(){Ni.apply(this),this.env=null,this.centrex=null,this.centrey=null,this.level=null;var t=arguments[0],e=arguments[1];this.env=t,this.level=e,this.centrex=(t.getMinX()+t.getMaxX())/2,this.centrey=(t.getMinY()+t.getMaxY())/2}function Ri(){}function Ti(){Ni.apply(this)}function Pi(){this.root=null,this.minExtent=1,this.root=new Ti}function bi(t){this.geometryFactory=t||new ie}function Oi(t){this.geometryFactory=t||new ie,this.precisionModel=this.geometryFactory.getPrecisionModel(),this.parser=new bi(this.geometryFactory)}function _i(){this.parser=new bi(this.geometryFactory)}function Mi(t){this.geometryFactory=t||new ie,this.precisionModel=this.geometryFactory.getPrecisionModel(),this.parser=new re(this.geometryFactory)}function Di(t){return[t.x,t.y]}function Ai(t){this.geometryFactory=t||new ie}function Fi(){if(this.noder=null,this.scaleFactor=null,this.offsetX=null,this.offsetY=null,this.isScaled=!1,2===arguments.length){var t=arguments[0],e=arguments[1];Fi.call(this,t,e,0,0)}else if(4===arguments.length){var n=arguments[0],i=arguments[1];arguments[2],arguments[3];this.noder=n,this.scaleFactor=i,this.isScaled=!this.isIntegerPrecision()}}function Gi(){if(this.inputGeom=null,this.isClosedEndpointsInInterior=!0,this.nonSimpleLocation=null,1===arguments.length){var t=arguments[0];this.inputGeom=t}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.inputGeom=e,this.isClosedEndpointsInInterior=!n.isInBoundary(2)}}function qi(){this.pt=null,this.isClosed=null,this.degree=null;var t=arguments[0];this.pt=t,this.isClosed=!1,this.degree=0}function Bi(){if(this.quadrantSegments=Bi.DEFAULT_QUADRANT_SEGMENTS,this.endCapStyle=Bi.CAP_ROUND,this.joinStyle=Bi.JOIN_ROUND,this.mitreLimit=Bi.DEFAULT_MITRE_LIMIT,this._isSingleSided=!1,this.simplifyFactor=Bi.DEFAULT_SIMPLIFY_FACTOR,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.setQuadrantSegments(t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.setQuadrantSegments(e),this.setEndCapStyle(n)}else if(4===arguments.length){var i=arguments[0],r=arguments[1],s=arguments[2],o=arguments[3];this.setQuadrantSegments(i),this.setEndCapStyle(r),this.setJoinStyle(s),this.setMitreLimit(o)}}function zi(){this.minIndex=-1,this.minCoord=null,this.minDe=null,this.orientedDe=null}function Vi(){this.array_=[]}function ki(){this.finder=null,this.dirEdgeList=new I,this.nodes=new I,this.rightMostCoord=null,this.env=null,this.finder=new zi}function Yi(){this.inputLine=null,\nthis.distanceTol=null,this.isDeleted=null,this.angleOrientation=he.COUNTERCLOCKWISE;var t=arguments[0];this.inputLine=t}function Ui(){this.ptList=null,this.precisionModel=null,this.minimimVertexDistance=0,this.ptList=new I}function Xi(){this.maxCurveSegmentError=0,this.filletAngleQuantum=null,this.closingSegLengthFactor=1,this.segList=null,this.distance=0,this.precisionModel=null,this.bufParams=null,this.li=null,this.s0=null,this.s1=null,this.s2=null,this.seg0=new ce,this.seg1=new ce,this.offset0=new ce,this.offset1=new ce,this.side=0,this._hasNarrowConcaveAngle=!1;var t=arguments[0],e=arguments[1],n=arguments[2];this.precisionModel=t,this.bufParams=e,this.li=new ae,this.filletAngleQuantum=Math.PI/2/e.getQuadrantSegments(),e.getQuadrantSegments()>=8&&e.getJoinStyle()===Bi.JOIN_ROUND&&(this.closingSegLengthFactor=Xi.MAX_CLOSING_SEG_LEN_FACTOR),this.init(n)}function Hi(){this.distance=0,this.precisionModel=null,this.bufParams=null;var t=arguments[0],e=arguments[1];this.precisionModel=t,this.bufParams=e}function Wi(){this.subgraphs=null,this.seg=new ce,this.cga=new he;var t=arguments[0];this.subgraphs=t}function ji(){this.upwardSeg=null,this.leftDepth=null;var t=arguments[0],e=arguments[1];this.upwardSeg=new ce(t),this.leftDepth=e}function Ki(){this.inputGeom=null,this.distance=null,this.curveBuilder=null,this.curveList=new I;var t=arguments[0],e=arguments[1],n=arguments[2];this.inputGeom=t,this.distance=e,this.curveBuilder=n}function Zi(){this._hasIntersection=!1,this.hasProper=!1,this.hasProperInterior=!1,this.hasInterior=!1,this.properIntersectionPoint=null,this.li=null,this.isSelfIntersection=null,this.numIntersections=0,this.numInteriorIntersections=0,this.numProperIntersections=0,this.numTests=0;var t=arguments[0];this.li=t}function Qi(){this.bufParams=null,this.workingPrecisionModel=null,this.workingNoder=null,this.geomFact=null,this.graph=null,this.edgeList=new ni;var t=arguments[0];this.bufParams=t}function Ji(){this.li=new ae,this.segStrings=null;var t=arguments[0];this.segStrings=t}function $i(){this.li=null,this.pt=null,this.originalPt=null,this.ptScaled=null,this.p0Scaled=null,this.p1Scaled=null,this.scaleFactor=null,this.minx=null,this.maxx=null,this.miny=null,this.maxy=null,this.corner=new Array(4).fill(null),this.safeEnv=null;var t=arguments[0],e=arguments[1],n=arguments[2];if(this.originalPt=t,this.pt=t,this.scaleFactor=e,this.li=n,0>=e)throw new i(\"Scale factor must be non-zero\");1!==e&&(this.pt=new g(this.scale(t.x),this.scale(t.y)),this.p0Scaled=new g,this.p1Scaled=new g),this.initCorners(this.pt)}function tr(){this.tempEnv1=new C,this.selectedSegment=new ce}function er(){this.index=null;var t=arguments[0];this.index=t}function nr(){tr.apply(this),this.hotPixel=null,this.parentEdge=null,this.hotPixelVertexIndex=null,this._isNodeAdded=!1;var t=arguments[0],e=arguments[1],n=arguments[2];this.hotPixel=t,this.parentEdge=e,this.hotPixelVertexIndex=n}function ir(){this.li=null,this.interiorIntersections=null;var t=arguments[0];this.li=t,this.interiorIntersections=new I}function rr(){this.pm=null,this.li=null,this.scaleFactor=null,this.noder=null,this.pointSnapper=null,this.nodedSegStrings=null;var t=arguments[0];this.pm=t,this.li=new ae,this.li.setPrecisionModel(t),this.scaleFactor=t.getScale()}function sr(){if(this.argGeom=null,this.distance=null,this.bufParams=new Bi,this.resultGeometry=null,this.saveException=null,1===arguments.length){var t=arguments[0];this.argGeom=t}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.argGeom=e,this.bufParams=n}}function or(){this.comps=null;var t=arguments[0];this.comps=t}function ar(){if(this.component=null,this.segIndex=null,this.pt=null,2===arguments.length){var t=arguments[0],e=arguments[1];ar.call(this,t,ar.INSIDE_AREA,e)}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this.component=n,this.segIndex=i,this.pt=r}}function ur(){this.pts=null;var t=arguments[0];this.pts=t}function lr(){this.locations=null;var t=arguments[0];this.locations=t}function hr(){if(this.geom=null,this.terminateDistance=0,this.ptLocator=new Te,this.minDistanceLocation=null,this.minDistance=r.MAX_VALUE,2===arguments.length){var t=arguments[0],e=arguments[1];hr.call(this,t,e,0)}else if(3===arguments.length){var n=arguments[0],i=arguments[1],s=arguments[2];this.geom=new Array(2).fill(null),this.geom[0]=n,this.geom[1]=i,this.terminateDistance=s}}function cr(){this.factory=null,this.directedEdges=new I,this.coordinates=null;var t=arguments[0];this.factory=t}function fr(){this._isMarked=!1,this._isVisited=!1,this.data=null}function gr(){fr.apply(this),this.parentEdge=null,this.from=null,this.to=null,this.p0=null,this.p1=null,this.sym=null,this.edgeDirection=null,this.quadrant=null,this.angle=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this.from=t,this.to=e,this.edgeDirection=i,this.p0=t.getCoordinate(),this.p1=n;var r=this.p1.x-this.p0.x,s=this.p1.y-this.p0.y;this.quadrant=Je.quadrant(r,s),this.angle=Math.atan2(s,r)}function dr(){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];gr.call(this,t,e,n,i)}function pr(){if(fr.apply(this),this.dirEdge=null,0===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];this.setDirectedEdges(t,e)}}function vr(){this.outEdges=new I,this.sorted=!1}function mr(){if(fr.apply(this),this.pt=null,this.deStar=null,1===arguments.length){var t=arguments[0];mr.call(this,t,new vr)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.pt=e,this.deStar=n}}function yr(){pr.apply(this),this.line=null;var t=arguments[0];this.line=t}function xr(){this.nodeMap=new rt}function Er(){this.edges=new J,this.dirEdges=new J,this.nodeMap=new xr}function Ir(){Er.apply(this)}function Nr(){this.graph=new Ir,this.mergedLineStrings=null,this.factory=null,this.edgeStrings=null}function Cr(){this.edgeRing=null,this.next=null,this.label=-1;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];gr.call(this,t,e,n,i)}function Sr(){pr.apply(this),this.line=null;var t=arguments[0];this.line=t}function wr(){this.factory=null,this.deList=new I,this.lowestEdge=null,this.ring=null,this.ringPts=null,this.holes=null,this.shell=null,this._isHole=null,this._isProcessed=!1,this._isIncludedSet=!1,this._isIncluded=!1;var t=arguments[0];this.factory=t}function Lr(){}function Rr(){Er.apply(this),this.factory=null;var t=arguments[0];this.factory=t}function Tr(){if(this.lineStringAdder=new Pr(this),this.graph=null,this.dangles=new I,this.cutEdges=new I,this.invalidRingLines=new I,this.holeList=null,this.shellList=null,this.polyList=null,this.isCheckingRingsValid=!0,this.extractOnlyPolygonal=null,this.geomFactory=null,0===arguments.length)Tr.call(this,!1);else if(1===arguments.length){var t=arguments[0];this.extractOnlyPolygonal=t}}function Pr(){this.p=null;var t=arguments[0];this.p=t}function br(){}function Or(){if(this.edgeEnds=new I,1===arguments.length){var t=arguments[0];Or.call(this,null,t)}else if(2===arguments.length){var e=(arguments[0],arguments[1]);En.call(this,e.getEdge(),e.getCoordinate(),e.getDirectedCoordinate(),new gn(e.getLabel())),this.insert(e)}}function _r(){Pn.apply(this)}function Mr(){var t=arguments[0],e=arguments[1];yn.call(this,t,e)}function Dr(){Nn.apply(this)}function Ar(){this.li=new ae,this.ptLocator=new Te,this.arg=null,this.nodes=new xn(new Dr),this.im=null,this.isolatedEdges=new I,this.invalidPoint=null;var t=arguments[0];this.arg=t}function Fr(){this.rectEnv=null;var t=arguments[0];this.rectEnv=t.getEnvelopeInternal()}function Gr(){this.li=new ae,this.rectEnv=null,this.diagUp0=null,this.diagUp1=null,this.diagDown0=null,this.diagDown1=null;var t=arguments[0];this.rectEnv=t,this.diagUp0=new g(t.getMinX(),t.getMinY()),this.diagUp1=new g(t.getMaxX(),t.getMaxY()),this.diagDown0=new g(t.getMinX(),t.getMaxY()),this.diagDown1=new g(t.getMaxX(),t.getMinY())}function qr(){this._isDone=!1}function Br(){this.rectangle=null,this.rectEnv=null;var t=arguments[0];this.rectangle=t,this.rectEnv=t.getEnvelopeInternal()}function zr(){qr.apply(this),this.rectEnv=null,this._intersects=!1;var t=arguments[0];this.rectEnv=t}function Vr(){qr.apply(this),this.rectSeq=null,this.rectEnv=null,this._containsPoint=!1;var t=arguments[0];this.rectSeq=t.getExteriorRing().getCoordinateSequence(),this.rectEnv=t.getEnvelopeInternal()}function kr(){qr.apply(this),this.rectEnv=null,this.rectIntersector=null,this.hasIntersection=!1,this.p0=new g,this.p1=new g;var t=arguments[0];this.rectEnv=t.getEnvelopeInternal(),this.rectIntersector=new Gr(this.rectEnv)}function Yr(){if(this._relate=null,2===arguments.length){var t=arguments[0],e=arguments[1];ti.call(this,t,e),this._relate=new Ar(this.arg)}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];ti.call(this,n,i,r),this._relate=new Ar(this.arg)}}function Ur(){this.geomFactory=null,this.skipEmpty=!1,this.inputGeoms=null;var t=arguments[0];this.geomFactory=Ur.extractFactory(t),this.inputGeoms=t}function Xr(){this.pointGeom=null,this.otherGeom=null,this.geomFact=null;var t=arguments[0],e=arguments[1];this.pointGeom=t,this.otherGeom=e,this.geomFact=e.getFactory()}function Hr(){this.sortIndex=-1,this.comps=null;var t=arguments[0],e=arguments[1];this.sortIndex=t,this.comps=e}function Wr(){this.inputPolys=null,this.geomFactory=null;var t=arguments[0];this.inputPolys=t,null===this.inputPolys&&(this.inputPolys=new I)}function jr(){if(this.polygons=new I,this.lines=new I,this.points=new I,this.geomFact=null,1===arguments.length){if(R(arguments[0],v)){var t=arguments[0];this.extract(t)}else if(arguments[0]instanceof B){var e=arguments[0];this.extract(e)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.geomFact=i,this.extract(n)}}function Kr(){this.geometryFactory=new ie,this.geomGraph=null,this.disconnectedRingcoord=null;var t=arguments[0];this.geomGraph=t}function Zr(){this.items=new I,this.subnode=[null,null]}function Qr(){if(this.min=null,this.max=null,0===arguments.length)this.min=0,this.max=0;else if(1===arguments.length){var t=arguments[0];this.init(t.min,t.max)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.init(e,n)}}function Jr(){this.pt=0,this.level=0,this.interval=null;var t=arguments[0];this.computeKey(t)}function $r(){Zr.apply(this),this.interval=null,this.centre=null,this.level=null;var t=arguments[0],e=arguments[1];this.interval=t,this.level=e,this.centre=(t.getMin()+t.getMax())/2}function ts(){Zr.apply(this)}function es(){this.root=null,this.minExtent=1,this.root=new ts}function ns(){}function is(){this.ring=null,this.tree=null,this.crossings=0,this.interval=new Qr;var t=arguments[0];this.ring=t,this.buildIndex()}function rs(){tr.apply(this),this.mcp=null,this.p=null;var t=arguments[0],e=arguments[1];this.mcp=t,this.p=e}function ss(){this.nodes=new xn(new Dr)}function os(){this.li=new ae,this.geomGraph=null,this.nodeGraph=new ss,this.invalidPoint=null;var t=arguments[0];this.geomGraph=t}function as(){this.graph=null,this.rings=new I,this.totalEnv=new C,this.index=null,this.nestedPt=null;var t=arguments[0];this.graph=t}function us(){if(this.errorType=null,this.pt=null,1===arguments.length){var t=arguments[0];us.call(this,t,null)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.errorType=e,null!==n&&(this.pt=n.copy())}}function ls(){this.parentGeometry=null,this.isSelfTouchingRingFormingHoleValid=!1,this.validErr=null;var t=arguments[0];this.parentGeometry=t}function hs(){_t.CoordinateOperation.apply(this),this.targetPM=null,this.removeCollapsed=!0;var t=arguments[0],e=arguments[1];this.targetPM=t,this.removeCollapsed=e}function cs(){this.targetPM=null,this.removeCollapsed=!0,this.changePrecisionModel=!1,this.isPointwise=!1;var t=arguments[0];this.targetPM=t}function fs(){this.pts=null,this.usePt=null,this.distanceTolerance=null,this.seg=new ce;var t=arguments[0];this.pts=t}function gs(){this.inputGeom=null,this.distanceTolerance=null,this.isEnsureValidTopology=!0;var t=arguments[0];this.inputGeom=t}function ds(){xe.apply(this),this.isEnsureValidTopology=!0,this.distanceTolerance=null;var t=arguments[0],e=arguments[1];this.isEnsureValidTopology=t,this.distanceTolerance=e}function ps(){if(this.parent=null,this.index=null,2===arguments.length){var t=arguments[0],e=arguments[1];ps.call(this,t,e,null,-1)}else if(4===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],s=arguments[3];ce.call(this,n,i),this.parent=r,this.index=s}}function vs(){if(this.parentLine=null,this.segs=null,this.resultSegs=new I,this.minimumSize=null,1===arguments.length){var t=arguments[0];vs.call(this,t,2)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.parentLine=e,this.minimumSize=n,this.init()}}function ms(){this.index=new Pi}function ys(){this.querySeg=null,this.items=new I;var t=arguments[0];this.querySeg=t}function xs(){this.li=new ae,this.inputIndex=new ms,this.outputIndex=new ms,this.line=null,this.linePts=null,this.distanceTolerance=0;var t=arguments[0],e=arguments[1];this.inputIndex=t,this.outputIndex=e}function Es(){this.inputIndex=new ms,this.outputIndex=new ms,this.distanceTolerance=0}function Is(){this.inputGeom=null,this.lineSimplifier=new Es,this.linestringMap=null;var t=arguments[0];this.inputGeom=t}function Ns(){xe.apply(this),this.linestringMap=null;var t=arguments[0];this.linestringMap=t}function Cs(){this.tps=null;var t=arguments[0];this.tps=t}function Ss(){this.seg=null,this.segLen=null,this.splitPt=null,this.minimumLen=0;var t=arguments[0];this.seg=t,this.segLen=t.getLength()}function ws(){}function Ls(){}function Rs(){}function Ts(){if(this.p=null,1===arguments.length){var t=arguments[0];this.p=new g(t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.p=new g(e,n)}else if(3===arguments.length){var i=arguments[0],r=arguments[1],s=arguments[2];this.p=new g(i,r,s)}}function Ps(){this._isOnConstraint=null,this.constraint=null;var t=arguments[0];Ts.call(this,t)}function bs(){this._rot=null,this.vertex=null,this.next=null,this.data=null}function Os(){this.subdiv=null,this.isUsingTolerance=!1;var t=arguments[0];this.subdiv=t,this.isUsingTolerance=t.getTolerance()>0}function _s(){}function Ms(){this.subdiv=null,this.lastEdge=null;var t=arguments[0];this.subdiv=t,this.init()}function Ds(){if(this.seg=null,1===arguments.length){if(\"string\"==typeof arguments[0]){var t=arguments[0];l.call(this,t)}else if(arguments[0]instanceof ce){var e=arguments[0];l.call(this,\"Locate failed to converge (at edge: \"+e+\"). Possible causes include invalid Subdivision topology or very close sites\"),this.seg=new ce(e)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];l.call(this,Ds.msgWithSpatial(n,i)),this.seg=new ce(i)}}function As(){}function Fs(){this.visitedKey=0,this.quadEdges=new I,this.startingEdge=null,this.tolerance=null,this.edgeCoincidenceTolerance=null,this.frameVertex=new Array(3).fill(null),this.frameEnv=null,this.locator=null,this.seg=new ce,this.triEdges=new Array(3).fill(null);var t=arguments[0],e=arguments[1];this.tolerance=e,this.edgeCoincidenceTolerance=e/Fs.EDGE_COINCIDENCE_TOL_FACTOR,this.createFrame(t),this.startingEdge=this.initSubdiv(),this.locator=new Ms(this)}function Gs(){}function qs(){this.triList=new I}function Bs(){this.triList=new I}function zs(){this.coordList=new N,this.triCoords=new I}function Vs(){if(this.ls=null,this.data=null,2===arguments.length){var t=arguments[0],e=arguments[1];this.ls=new ce(t,e)}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this.ls=new ce(n,i),this.data=r}else if(6===arguments.length){var s=arguments[0],o=arguments[1],a=arguments[2],u=arguments[3],l=arguments[4],h=arguments[5];Vs.call(this,new g(s,o,a),new g(u,l,h))}else if(7===arguments.length){var c=arguments[0],f=arguments[1],d=arguments[2],p=arguments[3],v=arguments[4],m=arguments[5],y=arguments[6];Vs.call(this,new g(c,f,d),new g(p,v,m),y)}}function ks(){}function Ys(){if(this.p=null,this.data=null,this.left=null,this.right=null,this.count=null,2===arguments.length){var t=arguments[0],e=arguments[1];this.p=new g(t),this.left=null,this.right=null,this.count=1,this.data=e}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this.p=new g(n,i),this.left=null,this.right=null,this.count=1,this.data=r}}function Us(){if(this.root=null,this.numberOfNodes=null,this.tolerance=null,0===arguments.length)Us.call(this,0);else if(1===arguments.length){var t=arguments[0];this.tolerance=t}}function Xs(){this.tolerance=null,this.matchNode=null,this.matchDist=0,this.p=null;var t=arguments[0],e=arguments[1];this.p=t,this.tolerance=e}function Hs(){this.initialVertices=null,this.segVertices=null,this.segments=new I,this.subdiv=null,this.incDel=null,this.convexHull=null,this.splitFinder=new Ls,this.kdt=null,this.vertexFactory=null,this.computeAreaEnv=null,this.splitPt=null,this.tolerance=null;var t=arguments[0],e=arguments[1];this.initialVertices=new I(t),this.tolerance=e,this.kdt=new Us(e)}function Ws(){this.siteCoords=null,this.tolerance=0,this.subdiv=null}function js(){this.siteCoords=null,this.constraintLines=null,this.tolerance=0,this.subdiv=null,this.constraintVertexMap=new rt}function Ks(){this.siteCoords=null,this.tolerance=0,this.subdiv=null,this.clipEnv=null,this.diagramEnv=null}function Zs(){}Array.prototype.fill||(Array.prototype.fill=function(t){for(var e=Object(this),n=parseInt(e.length,10),i=arguments[1],r=parseInt(i,10)||0,s=0>r?Math.max(n+r,0):Math.min(r,n),o=arguments[2],a=void 0===o?n:parseInt(o,10)||0,u=0>a?Math.max(n+a,0):Math.min(a,n);u>s;s++)e[s]=t;return e}),Number.isFinite=Number.isFinite||function(t){return\"number\"==typeof t&&isFinite(t)},Number.isInteger=Number.isInteger||function(t){return\"number\"==typeof t&&isFinite(t)&&Math.floor(t)===t},Number.parseFloat=Number.parseFloat||parseFloat,Number.isNaN=Number.isNaN||function(t){return t!==t},Math.trunc=Math.trunc||function(t){return 0>t?Math.ceil(t):Math.floor(t)},e(n.prototype,{interfaces_:function(){return[]},getClass:function(){return n}}),n.equalsWithTolerance=function(t,e,n){return Math.abs(t-e)<=n},r.isNaN=function(t){return Number.isNaN(t)},r.doubleToLongBits=function(t){return t},r.longBitsToDouble=function(t){return t},r.isInfinite=function(t){return!Number.isFinite(t)},r.MAX_VALUE=Number.MAX_VALUE,h(c,l),e(c.prototype,{interfaces_:function(){return[]},getClass:function(){return c}}),e(f.prototype,{interfaces_:function(){return[]},getClass:function(){return f}}),f.shouldNeverReachHere=function(){if(0===arguments.length)f.shouldNeverReachHere(null);else if(1===arguments.length){var t=arguments[0];throw new c(\"Should never reach here\"+(null!==t?\": \"+t:\"\"))}},f.isTrue=function(){if(1===arguments.length){var t=arguments[0];f.isTrue(t,null)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(!e)throw null===n?new c:new c(n)}},f.equals=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];f.equals(t,e,null)}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];if(!i.equals(n))throw new c(\"Expected \"+n+\" but encountered \"+i+(null!==r?\": \"+r:\"\"))}},e(g.prototype,{setOrdinate:function(t,e){switch(t){case g.X:this.x=e;break;case g.Y:this.y=e;break;case g.Z:this.z=e;break;default:throw new i(\"Invalid ordinate index: \"+t)}},equals2D:function(){if(1===arguments.length){var t=arguments[0];return this.x!==t.x?!1:this.y===t.y}if(2===arguments.length){var e=arguments[0],i=arguments[1];return n.equalsWithTolerance(this.x,e.x,i)?!!n.equalsWithTolerance(this.y,e.y,i):!1}},getOrdinate:function(t){switch(t){case g.X:return this.x;case g.Y:return this.y;case g.Z:return this.z}throw new i(\"Invalid ordinate index: \"+t)},equals3D:function(t){return this.x===t.x&&this.y===t.y&&(this.z===t.z||r.isNaN(this.z)&&r.isNaN(t.z))},equals:function(t){return t instanceof g?this.equals2D(t):!1},equalInZ:function(t,e){return n.equalsWithTolerance(this.z,t.z,e)},compareTo:function(t){var e=t;return this.xe.x?1:this.ye.y?1:0},clone:function(){try{var t=null;return t}catch(t){if(t instanceof CloneNotSupportedException)return f.shouldNeverReachHere(\"this shouldn't happen because this class is Cloneable\"),null;throw t}finally{}},copy:function(){return new g(this)},toString:function(){return\"(\"+this.x+\", \"+this.y+\", \"+this.z+\")\"},distance3D:function(t){var e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return Math.sqrt(e*e+n*n+i*i)},distance:function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)},hashCode:function(){var t=17;return t=37*t+g.hashCode(this.x),t=37*t+g.hashCode(this.y)},setCoordinate:function(t){this.x=t.x,this.y=t.y,this.z=t.z},interfaces_:function(){return[s,o,u]},getClass:function(){return g}}),g.hashCode=function(){if(1===arguments.length){var t=arguments[0],e=r.doubleToLongBits(t);return Math.trunc(e^e>>>32)}},e(d.prototype,{compare:function(t,e){var n=t,i=e,r=d.compare(n.x,i.x);if(0!==r)return r;var s=d.compare(n.y,i.y);if(0!==s)return s;if(this.dimensionsToTest<=2)return 0;var o=d.compare(n.z,i.z);return o},interfaces_:function(){return[a]},getClass:function(){return d}}),d.compare=function(t,e){return e>t?-1:t>e?1:r.isNaN(t)?r.isNaN(e)?0:-1:r.isNaN(e)?1:0},g.DimensionalComparator=d,g.serialVersionUID=0x5cbf2c235c7e5800,g.NULL_ORDINATE=r.NaN,g.X=0,g.Y=1,g.Z=2,p.prototype.hasNext=function(){},p.prototype.next=function(){},p.prototype.remove=function(){},v.prototype.add=function(){},v.prototype.addAll=function(){},v.prototype.isEmpty=function(){},v.prototype.iterator=function(){},v.prototype.size=function(){},v.prototype.toArray=function(){},v.prototype.remove=function(){},m.prototype=new Error,m.prototype.name=\"IndexOutOfBoundsException\",y.prototype=Object.create(v.prototype),y.prototype.constructor=y,y.prototype.get=function(){},y.prototype.set=function(){},y.prototype.isEmpty=function(){},x.prototype=new Error,x.prototype.name=\"NoSuchElementException\",E.prototype=new Error,E.prototype.name=\"OperationNotSupported\",I.prototype=Object.create(y.prototype),I.prototype.constructor=I,I.prototype.ensureCapacity=function(){},I.prototype.interfaces_=function(){return[y,v]},I.prototype.add=function(t){return this.array_.push(t),!0},I.prototype.clear=function(){this.array_=[]},I.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},I.prototype.set=function(t,e){var n=this.array_[t];return this.array_[t]=e,n},I.prototype.iterator=function(){return new Qs(this)},I.prototype.get=function(t){if(0>t||t>=this.size())throw new m;return this.array_[t]},I.prototype.isEmpty=function(){return 0===this.array_.length},I.prototype.size=function(){return this.array_.length},I.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;n>e;e++)t.push(this.array_[e]);return t},I.prototype.remove=function(t){for(var e=!1,n=0,i=this.array_.length;i>n;n++)if(this.array_[n]===t){this.array_.splice(n,1),e=!0;break}return e};var Qs=function(t){this.arrayList_=t,this.position_=0};Qs.prototype.next=function(){if(this.position_===this.arrayList_.size())throw new x;return this.arrayList_.get(this.position_++)},Qs.prototype.hasNext=function(){return this.position_=1){var s=this.get(this.size()-1);if(s.equals2D(i))return null}I.prototype.add.call(this,i)}else if(arguments[0]instanceof Object&&\"boolean\"==typeof arguments[1]){var o=arguments[0],a=arguments[1];return this.add(o,a),!0}}else if(3===arguments.length){if(\"boolean\"==typeof arguments[2]&&arguments[0]instanceof Array&&\"boolean\"==typeof arguments[1]){var u=arguments[0],l=arguments[1],h=arguments[2];if(h)for(var c=0;c=0;c--)this.add(u[c],l);return!0}if(\"boolean\"==typeof arguments[2]&&Number.isInteger(arguments[0])&&arguments[1]instanceof g){var f=arguments[0],d=arguments[1],p=arguments[2];if(!p){var v=this.size();if(v>0){if(f>0){var m=this.get(f-1);if(m.equals2D(d))return null}if(v>f){var y=this.get(f);if(y.equals2D(d))return null}}}I.prototype.add.call(this,f,d)}}else if(4===arguments.length){var x=arguments[0],E=arguments[1],N=arguments[2],C=arguments[3],S=1;N>C&&(S=-1);for(var c=N;c!==C;c+=S)this.add(x[c],E);return!0}},closeRing:function(){this.size()>0&&this.add(new g(this.get(0)),!1)},interfaces_:function(){return[]},getClass:function(){return N}}),N.coordArrayType=new Array(0).fill(null),e(C.prototype,{getArea:function(){return this.getWidth()*this.getHeight()},equals:function(t){if(!(t instanceof C))return!1;var e=t;return this.isNull()?e.isNull():this.maxx===e.getMaxX()&&this.maxy===e.getMaxY()&&this.minx===e.getMinX()&&this.miny===e.getMinY()},intersection:function(t){if(this.isNull()||t.isNull()||!this.intersects(t))return new C;var e=this.minx>t.minx?this.minx:t.minx,n=this.miny>t.miny?this.miny:t.miny,i=this.maxx=this.minx&&e.getMaxX()<=this.maxx&&e.getMinY()>=this.miny&&e.getMaxY()<=this.maxy}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return this.isNull()?!1:n>=this.minx&&n<=this.maxx&&i>=this.miny&&i<=this.maxy}},intersects:function(){if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];return this.isNull()||t.isNull()?!1:!(t.minx>this.maxx||t.maxxthis.maxy||t.maxythis.maxx||nthis.maxy||ithis.maxx&&(this.maxx=e.maxx),e.minythis.maxy&&(this.maxy=e.maxy))}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.isNull()?(this.minx=n,this.maxx=n,this.miny=i,this.maxy=i):(nthis.maxx&&(this.maxx=n),ithis.maxy&&(this.maxy=i))}},minExtent:function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return e>t?t:e},getWidth:function(){return this.isNull()?0:this.maxx-this.minx},compareTo:function(t){var e=t;return this.isNull()?e.isNull()?0:-1:e.isNull()?1:this.minxe.minx?1:this.minye.miny?1:this.maxxe.maxx?1:this.maxye.maxy?1:0},translate:function(t,e){return this.isNull()?null:void this.init(this.getMinX()+t,this.getMaxX()+t,this.getMinY()+e,this.getMaxY()+e)},toString:function(){return\"Env[\"+this.minx+\" : \"+this.maxx+\", \"+this.miny+\" : \"+this.maxy+\"]\"},setToNull:function(){this.minx=0,this.maxx=-1,this.miny=0,this.maxy=-1},getHeight:function(){return this.isNull()?0:this.maxy-this.miny},maxExtent:function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t>e?t:e},expandBy:function(){if(1===arguments.length){var t=arguments[0];this.expandBy(t,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this.isNull())return null;this.minx-=e,this.maxx+=e,this.miny-=n,this.maxy+=n,(this.minx>this.maxx||this.miny>this.maxy)&&this.setToNull()}},contains:function(){if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];return this.covers(t)}if(arguments[0]instanceof g){var e=arguments[0];return this.covers(e)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return this.covers(n,i)}},centre:function(){return this.isNull()?null:new g((this.getMinX()+this.getMaxX())/2,(this.getMinY()+this.getMaxY())/2)},init:function(){if(0===arguments.length)this.setToNull();else if(1===arguments.length){if(arguments[0]instanceof g){var t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof C){var e=arguments[0];this.minx=e.minx,this.maxx=e.maxx,this.miny=e.miny,this.maxy=e.maxy}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.init(n.x,i.x,n.y,i.y)}else if(4===arguments.length){var r=arguments[0],s=arguments[1],o=arguments[2],a=arguments[3];s>r?(this.minx=r,this.maxx=s):(this.minx=s,this.maxx=r),a>o?(this.miny=o,this.maxy=a):(this.miny=a,this.maxy=o)}},getMaxY:function(){return this.maxy},distance:function(t){if(this.intersects(t))return 0;var e=0;this.maxxt.maxx&&(e=this.minx-t.maxx);var n=0;return this.maxyt.maxy&&(n=this.miny-t.maxy),0===e?n:0===n?e:Math.sqrt(e*e+n*n)},hashCode:function(){var t=17;return t=37*t+g.hashCode(this.minx),t=37*t+g.hashCode(this.maxx),t=37*t+g.hashCode(this.miny),t=37*t+g.hashCode(this.maxy)},interfaces_:function(){return[s,u]},getClass:function(){return C}}),C.intersects=function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2];return n.x>=(t.xe.x?t.x:e.x)&&n.y>=(t.ye.y?t.y:e.y)}if(4===arguments.length){var i=arguments[0],r=arguments[1],s=arguments[2],o=arguments[3],a=Math.min(s.x,o.x),u=Math.max(s.x,o.x),l=Math.min(i.x,r.x),h=Math.max(i.x,r.x);return l>u?!1:a>h?!1:(a=Math.min(s.y,o.y),u=Math.max(s.y,o.y),l=Math.min(i.y,r.y),h=Math.max(i.y,r.y),l>u?!1:!(a>h))}},C.serialVersionUID=0x51845cd552189800,h(w,S),e(w.prototype,{interfaces_:function(){return[]},getClass:function(){return w}}),e(L.prototype,{interfaces_:function(){return[]},getClass:function(){return L}}),L.toLocationSymbol=function(t){switch(t){case L.EXTERIOR:return\"e\";case L.BOUNDARY:return\"b\";case L.INTERIOR:return\"i\";case L.NONE:return\"-\"}throw new i(\"Unknown location value: \"+t)},L.INTERIOR=0,L.BOUNDARY=1,L.EXTERIOR=2,L.NONE=-1,e(T.prototype,{interfaces_:function(){return[]},getClass:function(){return T}}),T.log10=function(t){var e=Math.log(t);return r.isInfinite(e)?e:r.isNaN(e)?e:e/T.LOG_10},T.min=function(t,e,n,i){var r=t;return r>e&&(r=e),r>n&&(r=n),r>i&&(r=i),r},T.clamp=function(){if(\"number\"==typeof arguments[2]&&\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1],n=arguments[2];return e>t?e:t>n?n:t}if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var i=arguments[0],r=arguments[1],s=arguments[2];return r>i?r:i>s?s:i}},T.wrap=function(t,e){return 0>t?e- -t%e:t%e},T.max=function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=t;return e>i&&(i=e),n>i&&(i=n),i}if(4===arguments.length){var r=arguments[0],s=arguments[1],o=arguments[2],a=arguments[3],i=r;return s>i&&(i=s),o>i&&(i=o),a>i&&(i=a),i}},T.average=function(t,e){\nreturn(t+e)/2},T.LOG_10=Math.log(10),P.prototype.append=function(t){this.str+=t},P.prototype.setCharAt=function(t,e){return this.str.substr(0,t)+e+this.str.substr(t+1)},P.prototype.toString=function(t){return this.str},b.prototype.intValue=function(){return this.value},b.prototype.compareTo=function(t){return this.valuet?1:0},b.isNaN=function(t){return Number.isNaN(t)},O.isWhitespace=function(t){return 32>=t&&t>=0||127==t},O.toUpperCase=function(t){return t.toUpperCase()},e(_.prototype,{le:function(t){return this.hi=u;u++){t&&u===s&&o.append(\".\");var l=Math.trunc(n.hi);if(0>l)break;var h=!1,c=0;l>9?(h=!0,c=\"9\"):c=\"0\"+l,o.append(c),n=n.subtract(_.valueOf(l)).multiply(_.TEN),h&&n.selfAdd(_.TEN);var f=!0,g=_.magnitude(n.hi);if(0>g&&Math.abs(g)>=a-u&&(f=!1),!f)break}return e[0]=i,o.toString()},sqr:function(){return this.multiply(this)},doubleValue:function(){return this.hi+this.lo},subtract:function(){if(arguments[0]instanceof _){var t=arguments[0];return this.add(t.negate())}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.add(-e)}},equals:function(){if(1===arguments.length){var t=arguments[0];return this.hi===t.hi&&this.lo===t.lo}},isZero:function(){return 0===this.hi&&0===this.lo},selfSubtract:function(){if(arguments[0]instanceof _){var t=arguments[0];return this.isNaN()?this:this.selfAdd(-t.hi,-t.lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.isNaN()?this:this.selfAdd(-e,0)}},getSpecialNumberString:function(){return this.isZero()?\"0.0\":this.isNaN()?\"NaN \":null},min:function(t){return this.le(t)?this:t},selfDivide:function(){if(1===arguments.length){if(arguments[0]instanceof _){var t=arguments[0];return this.selfDivide(t.hi,t.lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.selfDivide(e,0)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1],r=null,s=null,o=null,a=null,u=null,l=null,h=null,c=null;return u=this.hi/n,l=_.SPLIT*u,r=l-u,c=_.SPLIT*n,r=l-r,s=u-r,o=c-n,h=u*n,o=c-o,a=n-o,c=r*o-h+r*a+s*o+s*a,l=(this.hi-h-c+this.lo-u*i)/n,c=u+l,this.hi=c,this.lo=u-c+l,this}},dump:function(){return\"DD<\"+this.hi+\", \"+this.lo+\">\"},divide:function(){if(arguments[0]instanceof _){var t=arguments[0],e=null,n=null,i=null,s=null,o=null,a=null,u=null,l=null;o=this.hi/t.hi,a=_.SPLIT*o,e=a-o,l=_.SPLIT*t.hi,e=a-e,n=o-e,i=l-t.hi,u=o*t.hi,i=l-i,s=t.hi-i,l=e*i-u+e*s+n*i+n*s,a=(this.hi-u-l+this.lo-o*t.lo)/t.hi,l=o+a;var h=l,c=o-l+a;return new _(h,c)}if(\"number\"==typeof arguments[0]){var f=arguments[0];return r.isNaN(f)?_.createNaN():_.copy(this).selfDivide(f,0)}},ge:function(t){return this.hi>t.hi||this.hi===t.hi&&this.lo>=t.lo},pow:function(t){if(0===t)return _.valueOf(1);var e=new _(this),n=_.valueOf(1),i=Math.abs(t);if(i>1)for(;i>0;)i%2===1&&n.selfMultiply(e),i/=2,i>0&&(e=e.sqr());else n=e;return 0>t?n.reciprocal():n},ceil:function(){if(this.isNaN())return _.NaN;var t=Math.ceil(this.hi),e=0;return t===this.hi&&(e=Math.ceil(this.lo)),new _(t,e)},compareTo:function(t){var e=t;return this.hie.hi?1:this.loe.lo?1:0},rint:function(){if(this.isNaN())return this;var t=this.add(.5);return t.floor()},setValue:function(){if(arguments[0]instanceof _){var t=arguments[0];return this.init(t),this}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.init(e),this}},max:function(t){return this.ge(t)?this:t},sqrt:function(){if(this.isZero())return _.valueOf(0);if(this.isNegative())return _.NaN;var t=1/Math.sqrt(this.hi),e=this.hi*t,n=_.valueOf(e),i=this.subtract(n.sqr()),r=i.hi*(.5*t);return n.add(r)},selfAdd:function(){if(1===arguments.length){if(arguments[0]instanceof _){var t=arguments[0];return this.selfAdd(t.hi,t.lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0],n=null,i=null,r=null,s=null,o=null,a=null;return r=this.hi+e,o=r-this.hi,s=r-o,s=e-o+(this.hi-s),a=s+this.lo,n=r+a,i=a+(r-n),this.hi=n+i,this.lo=i+(n-this.hi),this}}else if(2===arguments.length){var u=arguments[0],l=arguments[1],n=null,i=null,h=null,c=null,r=null,s=null,o=null,a=null;r=this.hi+u,h=this.lo+l,o=r-this.hi,a=h-this.lo,s=r-o,c=h-a,s=u-o+(this.hi-s),c=l-a+(this.lo-c),o=s+h,n=r+o,i=o+(r-n),o=c+i;var f=n+o,g=o+(n-f);return this.hi=f,this.lo=g,this}},selfMultiply:function(){if(1===arguments.length){if(arguments[0]instanceof _){var t=arguments[0];return this.selfMultiply(t.hi,t.lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.selfMultiply(e,0)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1],r=null,s=null,o=null,a=null,u=null,l=null;u=_.SPLIT*this.hi,r=u-this.hi,l=_.SPLIT*n,r=u-r,s=this.hi-r,o=l-n,u=this.hi*n,o=l-o,a=n-o,l=r*o-u+r*a+s*o+s*a+(this.hi*i+this.lo*n);var h=u+l;r=u-h;var c=l+r;return this.hi=h,this.lo=c,this}},selfSqr:function(){return this.selfMultiply(this)},floor:function(){if(this.isNaN())return _.NaN;var t=Math.floor(this.hi),e=0;return t===this.hi&&(e=Math.floor(this.lo)),new _(t,e)},negate:function(){return this.isNaN()?this:new _(-this.hi,-this.lo)},clone:function(){try{return null}catch(t){if(t instanceof CloneNotSupportedException)return null;throw t}finally{}},multiply:function(){if(arguments[0]instanceof _){var t=arguments[0];return t.isNaN()?_.createNaN():_.copy(this).selfMultiply(t)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return r.isNaN(e)?_.createNaN():_.copy(this).selfMultiply(e,0)}},isNaN:function(){return r.isNaN(this.hi)},intValue:function(){return Math.trunc(this.hi)},toString:function(){var t=_.magnitude(this.hi);return t>=-3&&20>=t?this.toStandardNotation():this.toSciNotation()},toStandardNotation:function(){var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),n=this.extractSignificantDigits(!0,e),i=e[0]+1,r=n;if(\".\"===n.charAt(0))r=\"0\"+n;else if(0>i)r=\"0.\"+_.stringOfChar(\"0\",-i)+n;else if(-1===n.indexOf(\".\")){var s=i-n.length,o=_.stringOfChar(\"0\",s);r=n+o+\".0\"}return this.isNegative()?\"-\"+r:r},reciprocal:function(){var t=null,e=null,n=null,i=null,r=null,s=null,o=null,a=null;r=1/this.hi,s=_.SPLIT*r,t=s-r,a=_.SPLIT*this.hi,t=s-t,e=r-t,n=a-this.hi,o=r*this.hi,n=a-n,i=this.hi-n,a=t*n-o+t*i+e*n+e*i,s=(1-o-a-r*this.lo)/this.hi;var u=r+s,l=r-u+s;return new _(u,l)},toSciNotation:function(){if(this.isZero())return _.SCI_NOT_ZERO;var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),n=this.extractSignificantDigits(!1,e),i=_.SCI_NOT_EXPONENT_CHAR+e[0];if(\"0\"===n.charAt(0))throw new IllegalStateException(\"Found leading zero: \"+n);var r=\"\";n.length>1&&(r=n.substring(1));var s=n.charAt(0)+\".\"+r;return this.isNegative()?\"-\"+s+i:s+i},abs:function(){return this.isNaN()?_.NaN:this.isNegative()?this.negate():new _(this)},isPositive:function(){return this.hi>0||0===this.hi&&this.lo>0},lt:function(t){return this.hit.hi||this.hi===t.hi&&this.lo>t.lo},isNegative:function(){return this.hi<0||0===this.hi&&this.lo<0},trunc:function(){return this.isNaN()?_.NaN:this.isPositive()?this.floor():this.ceil()},signum:function(){return this.hi>0?1:this.hi<0?-1:this.lo>0?1:this.lo<0?-1:0},interfaces_:function(){return[u,s,o]},getClass:function(){return _}}),_.sqr=function(t){return _.valueOf(t).selfMultiply(t)},_.valueOf=function(){if(\"string\"==typeof arguments[0]){var t=arguments[0];return _.parse(t)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return new _(e)}},_.sqrt=function(t){return _.valueOf(t).sqrt()},_.parse=function(t){for(var e=0,n=t.length;O.isWhitespace(t.charAt(e));)e++;var i=!1;if(n>e){var r=t.charAt(e);\"-\"!==r&&\"+\"!==r||(e++,\"-\"===r&&(i=!0))}for(var s=new _,o=0,a=0,u=0;;){if(e>=n)break;var l=t.charAt(e);if(e++,O.isDigit(l)){var h=l-\"0\";s.selfMultiply(_.TEN),s.selfAdd(h),o++}else{if(\".\"!==l){if(\"e\"===l||\"E\"===l){var c=t.substring(e);try{u=b.parseInt(c)}catch(e){throw e instanceof NumberFormatException?new NumberFormatException(\"Invalid exponent \"+c+\" in string \"+t):e}finally{}break}throw new NumberFormatException(\"Unexpected character '\"+l+\"' at position \"+e+\" in string \"+t)}a=o}}var f=s,g=o-a-u;if(0===g)f=s;else if(g>0){var d=_.TEN.pow(g);f=s.divide(d)}else if(0>g){var d=_.TEN.pow(-g);f=s.multiply(d)}return i?f.negate():f},_.createNaN=function(){return new _(r.NaN,r.NaN)},_.copy=function(t){return new _(t)},_.magnitude=function(t){var e=Math.abs(t),n=Math.log(e)/Math.log(10),i=Math.trunc(Math.floor(n)),r=Math.pow(10,i);return e>=10*r&&(i+=1),i},_.stringOfChar=function(t,e){for(var n=new P,i=0;e>i;i++)n.append(t);return n.toString()},_.PI=new _(3.141592653589793,1.2246467991473532e-16),_.TWO_PI=new _(6.283185307179586,2.4492935982947064e-16),_.PI_2=new _(1.5707963267948966,6.123233995736766e-17),_.E=new _(2.718281828459045,1.4456468917292502e-16),_.NaN=new _(r.NaN,r.NaN),_.EPS=1.23259516440783e-32,_.SPLIT=134217729,_.MAX_PRINT_DIGITS=32,_.TEN=_.valueOf(10),_.ONE=_.valueOf(1),_.SCI_NOT_EXPONENT_CHAR=\"E\",_.SCI_NOT_ZERO=\"0.0E0\",e(M.prototype,{interfaces_:function(){return[]},getClass:function(){return M}}),M.orientationIndex=function(t,e,n){var i=M.orientationIndexFilter(t,e,n);if(1>=i)return i;var r=_.valueOf(e.x).selfAdd(-t.x),s=_.valueOf(e.y).selfAdd(-t.y),o=_.valueOf(n.x).selfAdd(-e.x),a=_.valueOf(n.y).selfAdd(-e.y);return r.selfMultiply(a).selfSubtract(s.selfMultiply(o)).signum()},M.signOfDet2x2=function(t,e,n,i){var r=t.multiply(i).selfSubtract(e.multiply(n));return r.signum()},M.intersection=function(t,e,n,i){var r=_.valueOf(i.y).selfSubtract(n.y).selfMultiply(_.valueOf(e.x).selfSubtract(t.x)),s=_.valueOf(i.x).selfSubtract(n.x).selfMultiply(_.valueOf(e.y).selfSubtract(t.y)),o=r.subtract(s),a=_.valueOf(i.x).selfSubtract(n.x).selfMultiply(_.valueOf(t.y).selfSubtract(n.y)),u=_.valueOf(i.y).selfSubtract(n.y).selfMultiply(_.valueOf(t.x).selfSubtract(n.x)),l=a.subtract(u),h=l.selfDivide(o).doubleValue(),c=_.valueOf(t.x).selfAdd(_.valueOf(e.x).selfSubtract(t.x).selfMultiply(h)).doubleValue(),f=_.valueOf(e.x).selfSubtract(t.x).selfMultiply(_.valueOf(t.y).selfSubtract(n.y)),d=_.valueOf(e.y).selfSubtract(t.y).selfMultiply(_.valueOf(t.x).selfSubtract(n.x)),p=f.subtract(d),v=p.selfDivide(o).doubleValue(),m=_.valueOf(n.y).selfAdd(_.valueOf(i.y).selfSubtract(n.y).selfMultiply(v)).doubleValue();return new g(c,m)},M.orientationIndexFilter=function(t,e,n){var i=null,r=(t.x-n.x)*(e.y-n.y),s=(t.y-n.y)*(e.x-n.x),o=r-s;if(r>0){if(0>=s)return M.signum(o);i=r+s}else{if(!(0>r))return M.signum(o);if(s>=0)return M.signum(o);i=-r-s}var a=M.DP_SAFE_EPSILON*i;return o>=a||-o>=a?M.signum(o):2},M.signum=function(t){return t>0?1:0>t?-1:0},M.DP_SAFE_EPSILON=1e-15,e(D.prototype,{setOrdinate:function(t,e,n){},size:function(){},getOrdinate:function(t,e){},getCoordinate:function(){if(1===arguments.length){arguments[0]}else if(2===arguments.length){arguments[0],arguments[1]}},getCoordinateCopy:function(t){},getDimension:function(){},getX:function(t){},clone:function(){},expandEnvelope:function(t){},copy:function(){},getY:function(t){},toCoordinateArray:function(){},interfaces_:function(){return[o]},getClass:function(){return D}}),D.X=0,D.Y=1,D.Z=2,D.M=3,A.arraycopy=function(t,e,n,i,r){for(var s=0,o=e;e+r>o;o++)n[i+s]=t[o],s++},A.getProperty=function(t){return{\"line.separator\":\"\\n\"}[t]},e(F.prototype,{getY:function(){var t=this.y/this.w;if(r.isNaN(t)||r.isInfinite(t))throw new w;return t},getX:function(){var t=this.x/this.w;if(r.isNaN(t)||r.isInfinite(t))throw new w;return t},getCoordinate:function(){var t=new g;return t.x=this.getX(),t.y=this.getY(),t},interfaces_:function(){return[]},getClass:function(){return F}}),F.intersection=function(t,e,n,i){var s=t.y-e.y,o=e.x-t.x,a=t.x*e.y-e.x*t.y,u=n.y-i.y,l=i.x-n.x,h=n.x*i.y-i.x*n.y,c=o*h-l*a,f=u*a-s*h,d=s*l-u*o,p=c/d,v=f/d;if(r.isNaN(p)||r.isInfinite(p)||r.isNaN(v)||r.isInfinite(v))throw new w;return new g(p,v)},e(G.prototype,{create:function(){if(1===arguments.length){if(arguments[0]instanceof Array){arguments[0]}else if(R(arguments[0],D)){arguments[0]}}else if(2===arguments.length){arguments[0],arguments[1]}},interfaces_:function(){return[]},getClass:function(){return G}}),e(q.prototype,{filter:function(t){},interfaces_:function(){return[]},getClass:function(){return q}}),e(B.prototype,{isGeometryCollection:function(){return this.getSortIndex()===B.SORTINDEX_GEOMETRYCOLLECTION},getFactory:function(){return this.factory},getGeometryN:function(t){return this},getArea:function(){return 0},isRectangle:function(){return!1},equals:function(){if(1===arguments.length){if(arguments[0]instanceof B){var t=arguments[0];return null===t?!1:this.equalsTopo(t)}if(arguments[0]instanceof Object){var e=arguments[0];if(!(e instanceof B))return!1;var n=e;return this.equalsExact(n)}}},equalsExact:function(t){return this===t||this.equalsExact(t,0)},geometryChanged:function(){this.apply(B.geometryChangedFilter)},geometryChangedAction:function(){this.envelope=null},equalsNorm:function(t){return null===t?!1:this.norm().equalsExact(t.norm())},getLength:function(){return 0},getNumGeometries:function(){return 1},compareTo:function(){if(1===arguments.length){var t=arguments[0],e=t;return this.getSortIndex()!==e.getSortIndex()?this.getSortIndex()-e.getSortIndex():this.isEmpty()&&e.isEmpty()?0:this.isEmpty()?-1:e.isEmpty()?1:this.compareToSameClass(t)}if(2===arguments.length){var n=arguments[0],i=arguments[1],e=n;return this.getSortIndex()!==e.getSortIndex()?this.getSortIndex()-e.getSortIndex():this.isEmpty()&&e.isEmpty()?0:this.isEmpty()?-1:e.isEmpty()?1:this.compareToSameClass(n,i)}},getUserData:function(){return this.userData},getSRID:function(){return this.SRID},getEnvelope:function(){return this.getFactory().toGeometry(this.getEnvelopeInternal())},checkNotGeometryCollection:function(t){if(t.getSortIndex()===B.SORTINDEX_GEOMETRYCOLLECTION)throw new i(\"This method does not support GeometryCollection arguments\")},equal:function(t,e,n){return 0===n?t.equals(e):t.distance(e)<=n},norm:function(){var t=this.copy();return t.normalize(),t},getPrecisionModel:function(){return this.factory.getPrecisionModel()},getEnvelopeInternal:function(){return null===this.envelope&&(this.envelope=this.computeEnvelopeInternal()),new C(this.envelope)},setSRID:function(t){this.SRID=t},setUserData:function(t){this.userData=t},compare:function(t,e){for(var n=t.iterator(),i=e.iterator();n.hasNext()&&i.hasNext();){var r=n.next(),s=i.next(),o=r.compareTo(s);if(0!==o)return o}return n.hasNext()?1:i.hasNext()?-1:0},hashCode:function(){return this.getEnvelopeInternal().hashCode()},isGeometryCollectionOrDerived:function(){return this.getSortIndex()===B.SORTINDEX_GEOMETRYCOLLECTION||this.getSortIndex()===B.SORTINDEX_MULTIPOINT||this.getSortIndex()===B.SORTINDEX_MULTILINESTRING||this.getSortIndex()===B.SORTINDEX_MULTIPOLYGON},interfaces_:function(){return[o,s,u]},getClass:function(){return B}}),B.hasNonEmptyElements=function(t){for(var e=0;e0},interfaces_:function(){return[V]},getClass:function(){return Y}}),e(U.prototype,{isInBoundary:function(t){return t>1},interfaces_:function(){return[V]},getClass:function(){return U}}),e(X.prototype,{isInBoundary:function(t){return 1===t},interfaces_:function(){return[V]},getClass:function(){return X}}),V.Mod2BoundaryNodeRule=k,V.EndPointBoundaryNodeRule=Y,V.MultiValentEndPointBoundaryNodeRule=U,V.MonoValentEndPointBoundaryNodeRule=X,V.MOD2_BOUNDARY_RULE=new k,V.ENDPOINT_BOUNDARY_RULE=new Y,V.MULTIVALENT_ENDPOINT_BOUNDARY_RULE=new U,V.MONOVALENT_ENDPOINT_BOUNDARY_RULE=new X,V.OGC_SFS_BOUNDARY_RULE=V.MOD2_BOUNDARY_RULE,e(H.prototype,{interfaces_:function(){return[]},getClass:function(){return H}}),H.isRing=function(t){return t.length<4?!1:!!t[0].equals2D(t[t.length-1])},H.ptNotInList=function(t,e){for(var n=0;nn)return null;var i=new Array(t.length).fill(null);A.arraycopy(t,n,i,0,t.length-n),A.arraycopy(t,0,i,t.length-n,n),A.arraycopy(i,0,t,0,t.length)},H.equals=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(t===e)return!0;if(null===t||null===e)return!1;if(t.length!==e.length)return!1;for(var n=0;n=i;i++){var r=t[i];t[i]=t[e-i],t[e-i]=r}},H.removeNull=function(t){for(var e=0,n=0;nn;n++)s[o+n]=new g(i[r+n])},H.isEqualReversed=function(t,e){for(var n=0;n=t?e:[]},H.indexOf=function(t,e){for(var n=0;n0)&&(e=t[n]);return e},H.extract=function(t,e,n){e=T.clamp(e,0,t.length),n=T.clamp(n,-1,t.length);var i=n-e+1;0>n&&(i=0),e>=t.length&&(i=0),e>n&&(i=0);var r=new Array(i).fill(null);if(0===i)return r;for(var s=0,o=e;n>=o;o++)r[s++]=t[o];return r},e(W.prototype,{compare:function(t,e){var n=t,i=e;return H.compare(n,i)},interfaces_:function(){return[a]},getClass:function(){return W}}),e(j.prototype,{compare:function(t,e){var n=t,i=e;if(n.lengthi.length)return 1;if(0===n.length)return 0;var r=H.compare(n,i),s=H.isEqualReversed(n,i);return s?0:r},OLDcompare:function(t,e){var n=t,i=e;if(n.lengthi.length)return 1;if(0===n.length)return 0;for(var r=H.increasingDirection(n),s=H.increasingDirection(i),o=r>0?0:n.length-1,a=s>0?0:n.length-1,u=0;ue;e++){var i=this.array_[e];if(i===t)return!0}return!1},J.prototype.add=function(t){return this.contains(t)?!1:(this.array_.push(t),!0)},J.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},J.prototype.remove=function(t){throw new javascript.util.OperationNotSupported},J.prototype.size=function(){return this.array_.length},J.prototype.isEmpty=function(){return 0===this.array_.length},J.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;n>e;e++)t.push(this.array_[e]);return t},J.prototype.iterator=function(){return new Js(this)};var Js=function(t){this.hashSet_=t,this.position_=0};Js.prototype.next=function(){if(this.position_===this.hashSet_.size())throw new x;return this.hashSet_.array_[this.position_++]},Js.prototype.hasNext=function(){return this.position_n)e=e.left;else{if(!(n>0))return e.value;e=e.right}}return null},rt.prototype.put=function(t,e){if(null===this.root_)return this.root_={key:t,value:e,left:null,right:null,parent:null,color:$s,getValue:function(){return this.value},getKey:function(){return this.key}},this.size_=1,null;var n,i,r=this.root_;do if(n=r,i=t.compareTo(r.key),0>i)r=r.left;else{if(!(i>0)){var s=r.value;return r.value=e,s}r=r.right}while(null!==r);var o={key:t,left:null,right:null,value:e,parent:n,color:$s,getValue:function(){return this.value},getKey:function(){return this.key}};return 0>i?n.left=o:n.right=o,this.fixAfterInsertion(o),this.size_++,null},rt.prototype.fixAfterInsertion=function(t){for(t.color=to;null!=t&&t!=this.root_&&t.parent.color==to;)if(tt(t)==nt(tt(tt(t)))){var e=it(tt(tt(t)));$(e)==to?(et(tt(t),$s),et(e,$s),et(tt(tt(t)),to),t=tt(tt(t))):(t==it(tt(t))&&(t=tt(t),this.rotateLeft(t)),et(tt(t),$s),et(tt(tt(t)),to),this.rotateRight(tt(tt(t))))}else{var e=nt(tt(tt(t)));$(e)==to?(et(tt(t),$s),et(e,$s),et(tt(tt(t)),to),t=tt(tt(t))):(t==nt(tt(t))&&(t=tt(t),this.rotateRight(t)),et(tt(t),$s),et(tt(tt(t)),to),this.rotateLeft(tt(tt(t))))}this.root_.color=$s},rt.prototype.values=function(){var t=new I,e=this.getFirstEntry();if(null!==e)for(t.add(e.value);null!==(e=rt.successor(e));)t.add(e.value);return t},rt.prototype.entrySet=function(){var t=new J,e=this.getFirstEntry();if(null!==e)for(t.add(e);null!==(e=rt.successor(e));)t.add(e);return t},rt.prototype.rotateLeft=function(t){if(null!=t){var e=t.right;t.right=e.left,null!=e.left&&(e.left.parent=t),e.parent=t.parent,null==t.parent?this.root_=e:t.parent.left==t?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e}},rt.prototype.rotateRight=function(t){if(null!=t){var e=t.left;t.left=e.right,null!=e.right&&(e.right.parent=t),e.parent=t.parent,null==t.parent?this.root_=e:t.parent.right==t?t.parent.right=e:t.parent.left=e,e.right=t,t.parent=e}},rt.prototype.getFirstEntry=function(){var t=this.root_;if(null!=t)for(;null!=t.left;)t=t.left;return t},rt.successor=function(t){if(null===t)return null;if(null!==t.right){for(var e=t.right;null!==e.left;)e=e.left;return e}for(var e=t.parent,n=t;null!==e&&n===e.right;)n=e,e=e.parent;return e},rt.prototype.size=function(){return this.size_},e(st.prototype,{interfaces_:function(){return[]},getClass:function(){return st}}),ot.prototype=new Q,at.prototype=new ot,at.prototype.contains=function(t){for(var e=0,n=this.array_.length;n>e;e++){var i=this.array_[e];if(0===i.compareTo(t))return!0}return!1},at.prototype.add=function(t){if(this.contains(t))return!1;for(var e=0,n=this.array_.length;n>e;e++){var i=this.array_[e];if(1===i.compareTo(t))return this.array_.splice(e,0,t),!0}return this.array_.push(t),!0},at.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},at.prototype.remove=function(t){throw new E},at.prototype.size=function(){return this.array_.length},at.prototype.isEmpty=function(){return 0===this.array_.length},at.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;n>e;e++)t.push(this.array_[e]);return t},at.prototype.iterator=function(){return new eo(this)};var eo=function(t){this.treeSet_=t,this.position_=0};eo.prototype.next=function(){if(this.position_===this.treeSet_.size())throw new x;return this.treeSet_.array_[this.position_++]},eo.prototype.hasNext=function(){return this.position_n;n++)e.add(t[n]);return e},e(lt.prototype,{interfaces_:function(){return[]},getClass:function(){return lt}}),lt.toDimensionSymbol=function(t){switch(t){case lt.FALSE:return lt.SYM_FALSE;case lt.TRUE:return lt.SYM_TRUE;case lt.DONTCARE:return lt.SYM_DONTCARE;case lt.P:return lt.SYM_P;case lt.L:return lt.SYM_L;case lt.A:return lt.SYM_A}throw new i(\"Unknown dimension value: \"+t)},lt.toDimensionValue=function(t){switch(O.toUpperCase(t)){case lt.SYM_FALSE:return lt.FALSE;case lt.SYM_TRUE:return lt.TRUE;case lt.SYM_DONTCARE:return lt.DONTCARE;case lt.SYM_P:return lt.P;case lt.SYM_L:return lt.L;case lt.SYM_A:return lt.A}throw new i(\"Unknown dimension symbol: \"+t)},lt.P=0,lt.L=1,lt.A=2,lt.FALSE=-1,lt.TRUE=-2,lt.DONTCARE=-3,lt.SYM_FALSE=\"F\",lt.SYM_TRUE=\"T\",lt.SYM_DONTCARE=\"*\",lt.SYM_P=\"0\",lt.SYM_L=\"1\",lt.SYM_A=\"2\",e(ht.prototype,{filter:function(t){},interfaces_:function(){return[]},getClass:function(){return ht}}),e(ct.prototype,{filter:function(t,e){},isDone:function(){},isGeometryChanged:function(){},interfaces_:function(){return[]},getClass:function(){return ct}}),h(ft,B),e(ft.prototype,{computeEnvelopeInternal:function(){for(var t=new C,e=0;eu&&a>u;){var l=this.getGeometryN(u),h=s.getGeometryN(u),c=l.compareToSameClass(h,r);if(0!==c)return c;u++}return o>u?1:a>u?-1:0}},apply:function(){if(R(arguments[0],z))for(var t=arguments[0],e=0;ei;i++)n[i]=t;return new String(n)},Nt.getStackTrace=function(){if(1===arguments.length){var t=arguments[0],e=new xt,n=new vt(e);return t.printStackTrace(n),e.toString()}if(2===arguments.length){for(var i=arguments[0],r=arguments[1],s=\"\",o=new mt(Nt.getStackTrace(i)),a=new It(o),u=0;r>u;u++)try{s+=a.readLine()+Nt.NEWLINE}catch(t){if(!(t instanceof Et))throw t;f.shouldNeverReachHere()}finally{}return s}},Nt.split=function(t,e){for(var n=e.length,i=new I,r=\"\"+t,s=r.indexOf(e);s>=0;){var o=r.substring(0,s);i.add(o),r=r.substring(s+n),s=r.indexOf(e)}r.length>0&&i.add(r);for(var a=new Array(i.size()).fill(null),u=0;us;s++)n.setOrdinate(i,s,t.getOrdinate(e,s))},Ct.isRing=function(t){var e=t.size();return 0===e?!0:3>=e?!1:t.getOrdinate(0,D.X)===t.getOrdinate(e-1,D.X)&&t.getOrdinate(0,D.Y)===t.getOrdinate(e-1,D.Y)},Ct.isEqual=function(t,e){var n=t.size(),i=e.size();if(n!==i)return!1;for(var s=Math.min(t.getDimension(),e.getDimension()),o=0;n>o;o++)for(var a=0;s>a;a++){var u=t.getOrdinate(o,a),l=e.getOrdinate(o,a);if(!(t.getOrdinate(o,a)===e.getOrdinate(o,a)||r.isNaN(u)&&r.isNaN(l)))return!1}return!0},Ct.extend=function(t,e,n){var i=t.create(n,e.getDimension()),r=e.size();if(Ct.copy(e,0,i,0,r),r>0)for(var s=r;n>s;s++)Ct.copy(e,r-1,i,s,1);return i},Ct.reverse=function(t){for(var e=t.size()-1,n=Math.trunc(e/2),i=0;n>=i;i++)Ct.swap(t,i,e-i)},Ct.swap=function(t,e,n){if(e===n)return null;for(var i=0;is;s++)Ct.copyCoord(t,e+s,n,i+s)},Ct.toString=function(){if(1===arguments.length){var t=arguments[0],e=t.size();if(0===e)return\"()\";var n=t.getDimension(),i=new P;i.append(\"(\");for(var r=0;e>r;r++){r>0&&i.append(\" \");for(var s=0;n>s;s++)s>0&&i.append(\",\"),i.append(Nt.toString(t.getOrdinate(r,s)))}return i.append(\")\"),i.toString()}},Ct.ensureValidRing=function(t,e){var n=e.size();if(0===n)return e;if(3>=n)return Ct.createClosedRing(t,e,4);var i=e.getOrdinate(0,D.X)===e.getOrdinate(n-1,D.X)&&e.getOrdinate(0,D.Y)===e.getOrdinate(n-1,D.Y);return i?e:Ct.createClosedRing(t,e,n+1)},Ct.createClosedRing=function(t,e,n){var i=t.create(n,e.getDimension()),r=e.size();Ct.copy(e,0,i,0,r);for(var s=r;n>s;s++)Ct.copy(e,0,i,s,1);return i},h(St,B),e(St.prototype,{computeEnvelopeInternal:function(){return this.isEmpty()?new C:this.points.expandEnvelope(new C)},isRing:function(){return this.isClosed()&&this.isSimple()},getSortIndex:function(){return B.SORTINDEX_LINESTRING},getCoordinates:function(){return this.points.toCoordinateArray()},equalsExact:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(!this.isEquivalentClass(t))return!1;var n=t;if(this.points.size()!==n.points.size())return!1;for(var i=0;i0&&Ct.reverse(this.points),null}},getCoordinate:function(){return this.isEmpty()?null:this.points.getCoordinate(0)},getBoundaryDimension:function(){return this.isClosed()?lt.FALSE:0},isClosed:function(){return this.isEmpty()?!1:this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints()-1))},getEndPoint:function(){return this.isEmpty()?null:this.getPointN(this.getNumPoints()-1)},getDimension:function(){return 1},getLength:function(){return he.computeLength(this.points)},getNumPoints:function(){return this.points.size()},reverse:function(){var t=this.points.copy();Ct.reverse(t);var e=this.getFactory().createLineString(t);return e},compareToSameClass:function(){if(1===arguments.length){for(var t=arguments[0],e=t,n=0,i=0;n= 2)\");this.points=t},isCoordinate:function(t){for(var e=0;en;n++){var i=t.getX(n);if(i!==e.getMinX()&&i!==e.getMaxX())return!1;var r=t.getY(n);if(r!==e.getMinY()&&r!==e.getMaxY())return!1}for(var s=t.getX(0),o=t.getY(0),n=1;4>=n;n++){var i=t.getX(n),r=t.getY(n),a=i!==s,u=r!==o;if(a===u)return!1;s=i,o=r}return!0},equalsExact:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(!this.isEquivalentClass(t))return!1;var n=t,i=this.shell,r=n.shell;if(!i.equalsExact(r,e))return!1;if(this.holes.length!==n.holes.length)return!1;for(var s=0;sl&&u>l;){var h=this.getInteriorRingN(l),c=s.getInteriorRingN(l),f=h.compareToSameClass(c,r);if(0!==f)return f;l++}return a>l?1:u>l?-1:0}},apply:function(){if(R(arguments[0],z)){var t=arguments[0];this.shell.apply(t);for(var e=0;e=1&&this.getCoordinateSequence().size()= 4)\")},getGeometryType:function(){return\"LinearRing\"},copy:function(){return new bt(this.points.copy(),this.factory)},interfaces_:function(){return[]},getClass:function(){return bt}}),bt.MINIMUM_VALID_SIZE=4,bt.serialVersionUID=-0x3b229e262367a600,h(Ot,ft),e(Ot.prototype,{getSortIndex:function(){return B.SORTINDEX_MULTIPOLYGON},equalsExact:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this.isEquivalentClass(t)?ft.prototype.equalsExact.call(this,t,e):!1}return ft.prototype.equalsExact.apply(this,arguments)},getBoundaryDimension:function(){return 1},getDimension:function(){return 2},reverse:function(){for(var t=this.geometries.length,e=new Array(t).fill(null),n=0;n0?e.createPoint(n[0]):e.createPoint()}return t},interfaces_:function(){return[Mt]},getClass:function(){return At}}),e(Ft.prototype,{edit:function(t,e){return t instanceof bt?e.createLinearRing(this.edit(t.getCoordinateSequence(),t)):t instanceof St?e.createLineString(this.edit(t.getCoordinateSequence(),t)):t instanceof Lt?e.createPoint(this.edit(t.getCoordinateSequence(),t)):t},interfaces_:function(){return[Mt]},getClass:function(){return Ft}}),_t.NoOpGeometryOperation=Dt,_t.CoordinateOperation=At,_t.CoordinateSequenceOperation=Ft,e(Gt.prototype,{setOrdinate:function(t,e,n){switch(e){case D.X:this.coordinates[t].x=n;break;case D.Y:this.coordinates[t].y=n;break;case D.Z:this.coordinates[t].z=n;break;default:throw new i(\"invalid ordinateIndex\")}},size:function(){return this.coordinates.length},getOrdinate:function(t,e){switch(e){case D.X:return this.coordinates[t].x;case D.Y:return this.coordinates[t].y;case D.Z:return this.coordinates[t].z}return r.NaN},getCoordinate:function(){if(1===arguments.length){var t=arguments[0];return this.coordinates[t]}if(2===arguments.length){var e=arguments[0],n=arguments[1];n.x=this.coordinates[e].x,n.y=this.coordinates[e].y,n.z=this.coordinates[e].z}},getCoordinateCopy:function(t){return new g(this.coordinates[t])},getDimension:function(){return this.dimension},getX:function(t){return this.coordinates[t].x},clone:function(){for(var t=new Array(this.size()).fill(null),e=0;e0){var t=new P(17*this.coordinates.length);t.append(\"(\"),t.append(this.coordinates[0]);for(var e=1;e3&&(i=3),2>i?new Gt(n):new Gt(n,i)}},interfaces_:function(){return[G,u]},getClass:function(){return qt}}),qt.instance=function(){return qt.instanceObject},qt.serialVersionUID=-0x38e49fa6cf6f2e00,qt.instanceObject=new qt;var no,io=Object.defineProperty,ro=zt({delete:kt,has:Xt,get:Yt,set:Ht,keys:jt,values:Kt,entries:Zt,forEach:$t,clear:Wt}),so=\"undefined\"!=typeof Map&&Map.prototype.values?Map:ro;te.prototype=new K,te.prototype.get=function(t){return this.map_.get(t)||null},te.prototype.put=function(t,e){return this.map_.set(t,e),e},te.prototype.values=function(){for(var t=new I,e=this.map_.values(),n=e.next();!n.done;)t.add(n.value),n=e.next();return t},te.prototype.entrySet=function(){var t=new J;return this.map_.entries().forEach(function(e){return t.add(e)}),t},te.prototype.size=function(){return this.map_.size()},e(ee.prototype,{equals:function(t){if(!(t instanceof ee))return!1;var e=t;return this.modelType===e.modelType&&this.scale===e.scale},compareTo:function(t){var e=t,n=this.getMaximumSignificantDigits(),i=e.getMaximumSignificantDigits();return new b(n).compareTo(new b(i))},getScale:function(){return this.scale},isFloating:function(){return this.modelType===ee.FLOATING||this.modelType===ee.FLOATING_SINGLE},getType:function(){return this.modelType},toString:function(){var t=\"UNKNOWN\";return this.modelType===ee.FLOATING?t=\"Floating\":this.modelType===ee.FLOATING_SINGLE?t=\"Floating-Single\":this.modelType===ee.FIXED&&(t=\"Fixed (Scale=\"+this.getScale()+\")\"),t},makePrecise:function(){if(\"number\"==typeof arguments[0]){var t=arguments[0];if(r.isNaN(t))return t;if(this.modelType===ee.FLOATING_SINGLE){var e=t;return e}return this.modelType===ee.FIXED?Math.round(t*this.scale)/this.scale:t}if(arguments[0]instanceof g){var n=arguments[0];if(this.modelType===ee.FLOATING)return null;n.x=this.makePrecise(n.x),n.y=this.makePrecise(n.y)}},getMaximumSignificantDigits:function(){var t=16;return this.modelType===ee.FLOATING?t=16:this.modelType===ee.FLOATING_SINGLE?t=6:this.modelType===ee.FIXED&&(t=1+Math.trunc(Math.ceil(Math.log(this.getScale())/Math.log(10)))),t},setScale:function(t){this.scale=Math.abs(t)},interfaces_:function(){return[u,s]},getClass:function(){return ee}}),ee.mostPrecise=function(t,e){return t.compareTo(e)>=0?t:e},e(ne.prototype,{readResolve:function(){return ne.nameToTypeMap.get(this.name)},toString:function(){return this.name},interfaces_:function(){return[u]},getClass:function(){return ne}}),ne.serialVersionUID=-552860263173159e4,ne.nameToTypeMap=new te,ee.Type=ne,ee.serialVersionUID=0x6bee6404e9a25c00,ee.FIXED=new ne(\"FIXED\"),ee.FLOATING=new ne(\"FLOATING\"),ee.FLOATING_SINGLE=new ne(\"FLOATING SINGLE\"),ee.maximumPreciseValue=9007199254740992,e(ie.prototype,{toGeometry:function(t){return t.isNull()?this.createPoint(null):t.getMinX()===t.getMaxX()&&t.getMinY()===t.getMaxY()?this.createPoint(new g(t.getMinX(),t.getMinY())):t.getMinX()===t.getMaxX()||t.getMinY()===t.getMaxY()?this.createLineString([new g(t.getMinX(),t.getMinY()),new g(t.getMaxX(),t.getMaxY())]):this.createPolygon(this.createLinearRing([new g(t.getMinX(),t.getMinY()),new g(t.getMinX(),t.getMaxY()),new g(t.getMaxX(),t.getMaxY()),new g(t.getMaxX(),t.getMinY()),new g(t.getMinX(),t.getMinY())]),null)},createLineString:function(){if(0===arguments.length)return this.createLineString(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return this.createLineString(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(R(arguments[0],D)){var e=arguments[0];return new St(e,this)}}},createMultiLineString:function(){if(0===arguments.length)return new gt(null,this);if(1===arguments.length){var t=arguments[0];return new gt(t,this)}},buildGeometry:function(t){for(var e=null,n=!1,i=!1,r=t.iterator();r.hasNext();){var s=r.next(),o=s.getClass();null===e&&(e=o),o!==e&&(n=!0),s.isGeometryCollectionOrDerived()&&(i=!0)}if(null===e)return this.createGeometryCollection();if(n||i)return this.createGeometryCollection(ie.toGeometryArray(t));var a=t.iterator().next(),u=t.size()>1;if(u){if(a instanceof Tt)return this.createMultiPolygon(ie.toPolygonArray(t));if(a instanceof St)return this.createMultiLineString(ie.toLineStringArray(t));if(a instanceof Lt)return this.createMultiPoint(ie.toPointArray(t));f.shouldNeverReachHere(\"Unhandled class: \"+a.getClass().getName())}return a},createMultiPointFromCoords:function(t){return this.createMultiPoint(null!==t?this.getCoordinateSequenceFactory().create(t):null)},createPoint:function(){if(0===arguments.length)return this.createPoint(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof g){var t=arguments[0];return this.createPoint(null!==t?this.getCoordinateSequenceFactory().create([t]):null)}if(R(arguments[0],D)){var e=arguments[0];return new Lt(e,this)}}},getCoordinateSequenceFactory:function(){return this.coordinateSequenceFactory},createPolygon:function(){if(0===arguments.length)return new Tt(null,null,this);if(1===arguments.length){if(R(arguments[0],D)){var t=arguments[0];return this.createPolygon(this.createLinearRing(t))}if(arguments[0]instanceof Array){var e=arguments[0];return this.createPolygon(this.createLinearRing(e))}if(arguments[0]instanceof bt){var n=arguments[0];return this.createPolygon(n,null)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];return new Tt(i,r,this)}},getSRID:function(){return this.SRID},createGeometryCollection:function(){if(0===arguments.length)return new ft(null,this);if(1===arguments.length){var t=arguments[0];return new ft(t,this)}},createGeometry:function(t){var e=new _t(this);return e.edit(t,{edit:function(){if(2===arguments.length){var t=arguments[0];arguments[1];return this.coordinateSequenceFactory.create(t)}}})},getPrecisionModel:function(){return this.precisionModel},createLinearRing:function(){if(0===arguments.length)return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return this.createLinearRing(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(R(arguments[0],D)){var e=arguments[0];return new bt(e,this)}}},createMultiPolygon:function(){if(0===arguments.length)return new Ot(null,this);if(1===arguments.length){var t=arguments[0];return new Ot(t,this)}},createMultiPoint:function(){if(0===arguments.length)return new Pt(null,this);if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return new Pt(t,this)}if(arguments[0]instanceof Array){var e=arguments[0];return this.createMultiPoint(null!==e?this.getCoordinateSequenceFactory().create(e):null)}if(R(arguments[0],D)){var n=arguments[0];if(null===n)return this.createMultiPoint(new Array(0).fill(null));for(var i=new Array(n.size()).fill(null),r=0;rn;++n)e.push(\"(\"+ao.point.apply(this,[t.geometries[n]])+\")\");return e.join(\",\")},linestring:function(t){for(var e=[],n=0,i=t.points.coordinates.length;i>n;++n)e.push(ao.coordinate.apply(this,[t.points.coordinates[n]]));return e.join(\",\")},linearring:function(t){for(var e=[],n=0,i=t.points.coordinates.length;i>n;++n)e.push(ao.coordinate.apply(this,[t.points.coordinates[n]]));return e.join(\",\")},multilinestring:function(t){for(var e=[],n=0,i=t.geometries.length;i>n;++n)e.push(\"(\"+ao.linestring.apply(this,[t.geometries[n]])+\")\");return e.join(\",\")},polygon:function(t){var e=[];e.push(\"(\"+ao.linestring.apply(this,[t.shell])+\")\");for(var n=0,i=t.holes.length;i>n;++n)e.push(\"(\"+ao.linestring.apply(this,[t.holes[n]])+\")\");return e.join(\",\")},multipolygon:function(t){for(var e=[],n=0,i=t.geometries.length;i>n;++n)e.push(\"(\"+ao.polygon.apply(this,[t.geometries[n]])+\")\");return e.join(\",\")},geometrycollection:function(t){for(var e=[],n=0,i=t.geometries.length;i>n;++n)e.push(this.extractGeometry(t.geometries[n]));return e.join(\",\")}},uo={point:function(t){if(void 0===t)return this.geometryFactory.createPoint();var e=t.trim().split(oo.spaces);return this.geometryFactory.createPoint(new g(Number.parseFloat(e[0]),Number.parseFloat(e[1])))},multipoint:function(t){if(void 0===t)return this.geometryFactory.createMultiPoint();for(var e,n=t.trim().split(\",\"),i=[],r=0,s=n.length;s>r;++r)e=n[r].replace(oo.trimParens,\"$1\"),i.push(uo.point.apply(this,[e]));return this.geometryFactory.createMultiPoint(i)},linestring:function(t){if(void 0===t)return this.geometryFactory.createLineString();for(var e,n=t.trim().split(\",\"),i=[],r=0,s=n.length;s>r;++r)e=n[r].trim().split(oo.spaces),i.push(new g(Number.parseFloat(e[0]),Number.parseFloat(e[1])));return this.geometryFactory.createLineString(i)},linearring:function(t){if(void 0===t)return this.geometryFactory.createLinearRing();for(var e,n=t.trim().split(\",\"),i=[],r=0,s=n.length;s>r;++r)e=n[r].trim().split(oo.spaces),i.push(new g(Number.parseFloat(e[0]),Number.parseFloat(e[1])));return this.geometryFactory.createLinearRing(i)},multilinestring:function(t){if(void 0===t)return this.geometryFactory.createMultiLineString();for(var e,n=t.trim().split(oo.parenComma),i=[],r=0,s=n.length;s>r;++r)e=n[r].replace(oo.trimParens,\"$1\"),i.push(uo.linestring.apply(this,[e]));return this.geometryFactory.createMultiLineString(i)},polygon:function(t){if(void 0===t)return this.geometryFactory.createPolygon();for(var e,n,i,r,s=t.trim().split(oo.parenComma),o=[],a=0,u=s.length;u>a;++a)e=s[a].replace(oo.trimParens,\"$1\"),n=uo.linestring.apply(this,[e]),i=this.geometryFactory.createLinearRing(n.points),0===a?r=i:o.push(i);return this.geometryFactory.createPolygon(r,o)},multipolygon:function(t){if(void 0===t)return this.geometryFactory.createMultiPolygon();for(var e,n=t.trim().split(oo.doubleParenComma),i=[],r=0,s=n.length;s>r;++r)e=n[r].replace(oo.trimParens,\"$1\"),i.push(uo.polygon.apply(this,[e]));return this.geometryFactory.createMultiPolygon(i)},geometrycollection:function(t){if(void 0===t)return this.geometryFactory.createGeometryCollection();t=t.replace(/,\\s*([A-Za-z])/g,\"|$1\");for(var e=t.trim().split(\"|\"),n=[],i=0,r=e.length;r>i;++i)n.push(this.read(e[i]));return this.geometryFactory.createGeometryCollection(n)}};e(se.prototype,{write:function(t){return this.parser.write(t)}}),e(se,{toLineString:function(t,e){if(2!==arguments.length)throw new Error(\"Not implemented\");return\"LINESTRING ( \"+t.x+\" \"+t.y+\", \"+e.x+\" \"+e.y+\" )\"}}),e(oe.prototype,{getIndexAlongSegment:function(t,e){return this.computeIntLineIndex(),this.intLineIndex[t][e]},getTopologySummary:function(){var t=new P;return this.isEndPoint()&&t.append(\" endpoint\"),this._isProper&&t.append(\" proper\"),this.isCollinear()&&t.append(\" collinear\"),t.toString()},computeIntersection:function(t,e,n,i){this.inputLines[0][0]=t,this.inputLines[0][1]=e,this.inputLines[1][0]=n,this.inputLines[1][1]=i,this.result=this.computeIntersect(t,e,n,i)},getIntersectionNum:function(){return this.result},computeIntLineIndex:function(){if(0===arguments.length)null===this.intLineIndex&&(this.intLineIndex=Array(2).fill().map(function(){return Array(2)}),this.computeIntLineIndex(0),this.computeIntLineIndex(1));else if(1===arguments.length){var t=arguments[0],e=this.getEdgeDistance(t,0),n=this.getEdgeDistance(t,1);e>n?(this.intLineIndex[t][0]=0,this.intLineIndex[t][1]=1):(this.intLineIndex[t][0]=1,this.intLineIndex[t][1]=0)}},isProper:function(){return this.hasIntersection()&&this._isProper},setPrecisionModel:function(t){this.precisionModel=t},isInteriorIntersection:function(){if(0===arguments.length)return this.isInteriorIntersection(0)?!0:!!this.isInteriorIntersection(1);if(1===arguments.length){for(var t=arguments[0],e=0;er?i:r;else{var o=Math.abs(t.x-e.x),a=Math.abs(t.y-e.y);s=i>r?o:a,0!==s||t.equals(e)||(s=Math.max(o,a))}return f.isTrue(!(0===s&&!t.equals(e)),\"Bad distance calculation\"),s},oe.nonRobustComputeEdgeDistance=function(t,e,n){var i=t.x-e.x,r=t.y-e.y,s=Math.sqrt(i*i+r*r);return f.isTrue(!(0===s&&!t.equals(e)),\"Invalid distance calculation\"),s},oe.DONT_INTERSECT=0,oe.DO_INTERSECT=1,oe.COLLINEAR=2,oe.NO_INTERSECTION=0,oe.POINT_INTERSECTION=1,oe.COLLINEAR_INTERSECTION=2,h(ae,oe),e(ae.prototype,{isInSegmentEnvelopes:function(t){var e=new C(this.inputLines[0][0],this.inputLines[0][1]),n=new C(this.inputLines[1][0],this.inputLines[1][1]);return e.contains(t)&&n.contains(t)},computeIntersection:function(){if(3!==arguments.length)return oe.prototype.computeIntersection.apply(this,arguments);var t=arguments[0],e=arguments[1],n=arguments[2];return this._isProper=!1,C.intersects(e,n,t)&&0===he.orientationIndex(e,n,t)&&0===he.orientationIndex(n,e,t)?(this._isProper=!0,(t.equals(e)||t.equals(n))&&(this._isProper=!1),this.result=oe.POINT_INTERSECTION,null):void(this.result=oe.NO_INTERSECTION)},normalizeToMinimum:function(t,e,n,i,r){r.x=this.smallestInAbsValue(t.x,e.x,n.x,i.x),r.y=this.smallestInAbsValue(t.y,e.y,n.y,i.y),t.x-=r.x,t.y-=r.y,e.x-=r.x,e.y-=r.y,n.x-=r.x,n.y-=r.y,i.x-=r.x,i.y-=r.y},safeHCoordinateIntersection:function(t,e,n,i){var r=null;try{r=F.intersection(t,e,n,i)}catch(s){if(!(s instanceof w))throw s;r=ae.nearestEndpoint(t,e,n,i)}finally{}return r},intersection:function(t,e,n,i){var r=this.intersectionWithNormalization(t,e,n,i);return this.isInSegmentEnvelopes(r)||(r=new g(ae.nearestEndpoint(t,e,n,i))),null!==this.precisionModel&&this.precisionModel.makePrecise(r),r},smallestInAbsValue:function(t,e,n,i){var r=t,s=Math.abs(r);return Math.abs(e)1e-4&&A.out.println(\"Distance = \"+r.distance(s))},intersectionWithNormalization:function(t,e,n,i){var r=new g(t),s=new g(e),o=new g(n),a=new g(i),u=new g;this.normalizeToEnvCentre(r,s,o,a,u);var l=this.safeHCoordinateIntersection(r,s,o,a);return l.x+=u.x,l.y+=u.y,l},computeCollinearIntersection:function(t,e,n,i){var r=C.intersects(t,e,n),s=C.intersects(t,e,i),o=C.intersects(n,i,t),a=C.intersects(n,i,e);return r&&s?(this.intPt[0]=n,this.intPt[1]=i,oe.COLLINEAR_INTERSECTION):o&&a?(this.intPt[0]=t,this.intPt[1]=e,oe.COLLINEAR_INTERSECTION):r&&o?(this.intPt[0]=n,this.intPt[1]=t,!n.equals(t)||s||a?oe.COLLINEAR_INTERSECTION:oe.POINT_INTERSECTION):r&&a?(this.intPt[0]=n,this.intPt[1]=e,!n.equals(e)||s||o?oe.COLLINEAR_INTERSECTION:oe.POINT_INTERSECTION):s&&o?(this.intPt[0]=i,this.intPt[1]=t,!i.equals(t)||r||a?oe.COLLINEAR_INTERSECTION:oe.POINT_INTERSECTION):s&&a?(this.intPt[0]=i,this.intPt[1]=e,!i.equals(e)||r||o?oe.COLLINEAR_INTERSECTION:oe.POINT_INTERSECTION):oe.NO_INTERSECTION},normalizeToEnvCentre:function(t,e,n,i,r){var s=t.xe.x?t.x:e.x,u=t.y>e.y?t.y:e.y,l=n.xi.x?n.x:i.x,f=n.y>i.y?n.y:i.y,g=s>l?s:l,d=c>a?a:c,p=o>h?o:h,v=f>u?u:f,m=(g+d)/2,y=(p+v)/2;r.x=m,r.y=y,t.x-=r.x,t.y-=r.y,e.x-=r.x,e.y-=r.y,n.x-=r.x,n.y-=r.y,i.x-=r.x,i.y-=r.y},computeIntersect:function(t,e,n,i){if(this._isProper=!1,!C.intersects(t,e,n,i))return oe.NO_INTERSECTION;var r=he.orientationIndex(t,e,n),s=he.orientationIndex(t,e,i);if(r>0&&s>0||0>r&&0>s)return oe.NO_INTERSECTION;var o=he.orientationIndex(n,i,t),a=he.orientationIndex(n,i,e);if(o>0&&a>0||0>o&&0>a)return oe.NO_INTERSECTION;var u=0===r&&0===s&&0===o&&0===a;return u?this.computeCollinearIntersection(t,e,n,i):(0===r||0===s||0===o||0===a?(this._isProper=!1,t.equals2D(n)||t.equals2D(i)?this.intPt[0]=t:e.equals2D(n)||e.equals2D(i)?this.intPt[0]=e:0===r?this.intPt[0]=new g(n):0===s?this.intPt[0]=new g(i):0===o?this.intPt[0]=new g(t):0===a&&(this.intPt[0]=new g(e))):(this._isProper=!0,this.intPt[0]=this.intersection(t,e,n,i)),oe.POINT_INTERSECTION)},interfaces_:function(){return[]},getClass:function(){return ae}}),ae.nearestEndpoint=function(t,e,n,i){var r=t,s=he.distancePointLine(t,n,i),o=he.distancePointLine(e,n,i);return s>o&&(s=o,r=e),o=he.distancePointLine(n,t,e),s>o&&(s=o,r=n),o=he.distancePointLine(i,t,e),s>o&&(s=o,r=i),r},e(ue.prototype,{interfaces_:function(){return[]},getClass:function(){return ue}}),ue.orientationIndex=function(t,e,n){var i=e.x-t.x,r=e.y-t.y,s=n.x-e.x,o=n.y-e.y;return ue.signOfDet2x2(i,r,s,o)},ue.signOfDet2x2=function(t,e,n,i){var r=null,s=null,o=null,a=0;if(r=1,0===t||0===i)return 0===e||0===n?0:e>0?n>0?-r:r:n>0?r:-r;if(0===e||0===n)return i>0?t>0?r:-r:t>0?-r:r;if(e>0?i>0?i>=e||(r=-r,s=t,t=n,n=s,s=e,e=i,i=s):-i>=e?(r=-r,n=-n,i=-i):(s=t,t=-n,n=s,s=e,e=-i,i=s):i>0?i>=-e?(r=-r,t=-t,e=-e):(s=-t,t=n,n=s,s=-e,e=i,i=s):e>=i?(t=-t,e=-e,n=-n,i=-i):(r=-r,s=-t,t=-n,n=s,s=-e,e=-i,i=s),t>0){if(!(n>0))return r;if(!(n>=t))return r}else{if(n>0)return-r;if(!(t>=n))return-r;r=-r,t=-t,n=-n}for(;;){if(a+=1,o=Math.floor(n/t),n-=o*t,i-=o*e,0>i)return-r;if(i>e)return r;if(t>n+n){if(i+i>e)return r}else{if(e>i+i)return-r;n=t-n,i=e-i,r=-r}if(0===i)return 0===n?0:-r;if(0===n)return r;if(o=Math.floor(t/n),t-=o*n,e-=o*i,0>e)return r;if(e>i)return-r;if(n>t+t){if(e+e>i)return-r}else{if(i>e+e)return r;t=n-t,e=i-e,r=-r}if(0===e)return 0===t?0:r;if(0===t)return-r}},e(le.prototype,{countSegment:function(t,e){if(t.xi&&(n=e.x,i=t.x),this.p.x>=n&&this.p.x<=i&&(this.isPointOnSegment=!0),null}if(t.y>this.p.y&&e.y<=this.p.y||e.y>this.p.y&&t.y<=this.p.y){var r=t.x-this.p.x,s=t.y-this.p.y,o=e.x-this.p.x,a=e.y-this.p.y,u=ue.signOfDet2x2(r,s,o,a);if(0===u)return this.isPointOnSegment=!0,null;s>a&&(u=-u),u>0&&this.crossingCount++}},isPointInPolygon:function(){return this.getLocation()!==L.EXTERIOR},getLocation:function(){return this.isPointOnSegment?L.BOUNDARY:this.crossingCount%2===1?L.INTERIOR:L.EXTERIOR},isOnSegment:function(){return this.isPointOnSegment},interfaces_:function(){return[]},getClass:function(){return le}}),le.locatePointInRing=function(){if(arguments[0]instanceof g&&R(arguments[1],D)){for(var t=arguments[0],e=arguments[1],n=new le(t),i=new g,r=new g,s=1;su)return 0;var l=new g,h=new g,c=new g;a.getCoordinate(0,h),a.getCoordinate(1,c);var n=h.x;c.x-=n;for(var e=0,i=1;u-1>i;i++)l.y=h.y,h.x=c.x,h.y=c.y,a.getCoordinate(i+1,c),c.x-=n,e+=h.x*(l.y-c.y);return e/2}},he.distanceLineLine=function(t,e,n,i){if(t.equals(e))return he.distancePointLine(t,n,i);if(n.equals(i))return he.distancePointLine(i,t,e);var r=!1;if(C.intersects(t,e,n,i)){var s=(e.x-t.x)*(i.y-n.y)-(e.y-t.y)*(i.x-n.x);if(0===s)r=!0;else{var o=(t.y-n.y)*(i.x-n.x)-(t.x-n.x)*(i.y-n.y),a=(t.y-n.y)*(e.x-t.x)-(t.x-n.x)*(e.y-t.y),u=a/s,l=o/s;(0>l||l>1||0>u||u>1)&&(r=!0)}}else r=!0;return r?T.min(he.distancePointLine(t,n,i),he.distancePointLine(e,n,i),he.distancePointLine(n,t,e),he.distancePointLine(i,t,e)):0},he.isPointInRing=function(t,e){return he.locatePointInRing(t,e)!==L.EXTERIOR},he.computeLength=function(t){var e=t.size();if(1>=e)return 0;var n=0,i=new g;t.getCoordinate(0,i);for(var r=i.x,s=i.y,o=1;e>o;o++){t.getCoordinate(o,i);var a=i.x,u=i.y,l=a-r,h=u-s;n+=Math.sqrt(l*l+h*h),r=a,s=u}return n},he.isCCW=function(t){var e=t.length-1;if(3>e)throw new i(\"Ring has fewer than 4 points, so orientation cannot be determined\");for(var n=t[0],r=0,s=1;e>=s;s++){var o=t[s];o.y>n.y&&(n=o,r=s)}var a=r;do a-=1,0>a&&(a=e);while(t[a].equals2D(n)&&a!==r);var u=r;do u=(u+1)%e;while(t[u].equals2D(n)&&u!==r);var l=t[a],h=t[u];if(l.equals2D(n)||h.equals2D(n)||l.equals2D(h))return!1;var c=he.computeOrientation(l,n,h),f=!1;return f=0===c?l.x>h.x:c>0},he.locatePointInRing=function(t,e){return le.locatePointInRing(t,e)},he.distancePointLinePerpendicular=function(t,e,n){var i=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y),r=((e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y))/i;return Math.abs(r)*Math.sqrt(i)},he.computeOrientation=function(t,e,n){return he.orientationIndex(t,e,n)},he.distancePointLine=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(0===e.length)throw new i(\"Line array must contain at least one vertex\");for(var n=t.distance(e[0]),r=0;rs&&(n=s)}return n}if(3===arguments.length){var o=arguments[0],a=arguments[1],u=arguments[2];if(a.x===u.x&&a.y===u.y)return o.distance(a);var l=(u.x-a.x)*(u.x-a.x)+(u.y-a.y)*(u.y-a.y),h=((o.x-a.x)*(u.x-a.x)+(o.y-a.y)*(u.y-a.y))/l;if(0>=h)return o.distance(a);if(h>=1)return o.distance(u);var c=((a.y-o.y)*(u.x-a.x)-(a.x-o.x)*(u.y-a.y))/l;return Math.abs(c)*Math.sqrt(l)}},he.isOnLine=function(t,e){for(var n=new ae,i=1;i=0&&n>=0?Math.max(e,n):0>=e&&0>=n?Math.max(e,n):0}if(arguments[0]instanceof g){var i=arguments[0];return he.orientationIndex(this.p0,this.p1,i)}},toGeometry:function(t){return t.createLineString([this.p0,this.p1])},isVertical:function(){return this.p0.x===this.p1.x},equals:function(t){if(!(t instanceof ce))return!1;var e=t;return this.p0.equals(e.p0)&&this.p1.equals(e.p1)},intersection:function(t){var e=new ae;return e.computeIntersection(this.p0,this.p1,t.p0,t.p1),e.hasIntersection()?e.getIntersection(0):null},project:function(){if(arguments[0]instanceof g){var t=arguments[0];if(t.equals(this.p0)||t.equals(this.p1))return new g(t);var e=this.projectionFactor(t),n=new g;return n.x=this.p0.x+e*(this.p1.x-this.p0.x),n.y=this.p0.y+e*(this.p1.y-this.p0.y),n}if(arguments[0]instanceof ce){var i=arguments[0],r=this.projectionFactor(i.p0),s=this.projectionFactor(i.p1);if(r>=1&&s>=1)return null;if(0>=r&&0>=s)return null;var o=this.project(i.p0);0>r&&(o=this.p0),r>1&&(o=this.p1);var a=this.project(i.p1);return 0>s&&(a=this.p0),s>1&&(a=this.p1),new ce(o,a)}},normalize:function(){this.p1.compareTo(this.p0)<0&&this.reverse()},angle:function(){return Math.atan2(this.p1.y-this.p0.y,this.p1.x-this.p0.x)},getCoordinate:function(t){return 0===t?this.p0:this.p1},distancePerpendicular:function(t){return he.distancePointLinePerpendicular(t,this.p0,this.p1)},minY:function(){return Math.min(this.p0.y,this.p1.y)},midPoint:function(){return ce.midPoint(this.p0,this.p1)},projectionFactor:function(t){if(t.equals(this.p0))return 0;if(t.equals(this.p1))return 1;var e=this.p1.x-this.p0.x,n=this.p1.y-this.p0.y,i=e*e+n*n;if(0>=i)return r.NaN;var s=((t.x-this.p0.x)*e+(t.y-this.p0.y)*n)/i;return s},closestPoints:function(t){var e=this.intersection(t);if(null!==e)return[e,e];var n=new Array(2).fill(null),i=r.MAX_VALUE,s=null,o=this.closestPoint(t.p0);i=o.distance(t.p0),n[0]=o,n[1]=t.p0;var a=this.closestPoint(t.p1);s=a.distance(t.p1),i>s&&(i=s,n[0]=a,n[1]=t.p1);var u=t.closestPoint(this.p0);s=u.distance(this.p0),i>s&&(i=s,n[0]=this.p0,n[1]=u);var l=t.closestPoint(this.p1);return s=l.distance(this.p1),i>s&&(i=s,n[0]=this.p1,n[1]=l),n},closestPoint:function(t){var e=this.projectionFactor(t);if(e>0&&1>e)return this.project(t);var n=this.p0.distance(t),i=this.p1.distance(t);return i>n?this.p0:this.p1},maxX:function(){return Math.max(this.p0.x,this.p1.x)},getLength:function(){return this.p0.distance(this.p1)},compareTo:function(t){var e=t,n=this.p0.compareTo(e.p0);return 0!==n?n:this.p1.compareTo(e.p1)},reverse:function(){var t=this.p0;this.p0=this.p1,this.p1=t},equalsTopo:function(t){return this.p0.equals(t.p0)&&this.p1.equals(t.p1)||this.p0.equals(t.p1)&&this.p1.equals(t.p0)},lineIntersection:function(t){try{var e=F.intersection(this.p0,this.p1,t.p0,t.p1);return e}catch(t){if(!(t instanceof w))throw t}finally{}return null},maxY:function(){return Math.max(this.p0.y,this.p1.y)},pointAlongOffset:function(t,e){var n=this.p0.x+t*(this.p1.x-this.p0.x),i=this.p0.y+t*(this.p1.y-this.p0.y),r=this.p1.x-this.p0.x,s=this.p1.y-this.p0.y,o=Math.sqrt(r*r+s*s),a=0,u=0;if(0!==e){if(0>=o)throw new IllegalStateException(\"Cannot compute offset from zero-length line segment\");a=e*r/o,u=e*s/o}var l=n-u,h=i+a,c=new g(l,h);return c},setCoordinates:function(){if(1===arguments.length){var t=arguments[0];this.setCoordinates(t.p0,t.p1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.p0.x=e.x,this.p0.y=e.y,this.p1.x=n.x,this.p1.y=n.y}},segmentFraction:function(t){var e=this.projectionFactor(t);return 0>e?e=0:(e>1||r.isNaN(e))&&(e=1),e},toString:function(){return\"LINESTRING( \"+this.p0.x+\" \"+this.p0.y+\", \"+this.p1.x+\" \"+this.p1.y+\")\"},isHorizontal:function(){return this.p0.y===this.p1.y},distance:function(){if(arguments[0]instanceof ce){var t=arguments[0];return he.distanceLineLine(this.p0,this.p1,t.p0,t.p1)}if(arguments[0]instanceof g){var e=arguments[0];return he.distancePointLine(e,this.p0,this.p1)}},pointAlong:function(t){var e=new g;return e.x=this.p0.x+t*(this.p1.x-this.p0.x),e.y=this.p0.y+t*(this.p1.y-this.p0.y),e},hashCode:function(){var t=java.lang.Double.doubleToLongBits(this.p0.x);t^=31*java.lang.Double.doubleToLongBits(this.p0.y);var e=Math.trunc(t)^Math.trunc(t>>32),n=java.lang.Double.doubleToLongBits(this.p1.x);n^=31*java.lang.Double.doubleToLongBits(this.p1.y);var i=Math.trunc(n)^Math.trunc(n>>32);return e^i},interfaces_:function(){return[s,u]},getClass:function(){return ce}}),ce.midPoint=function(t,e){return new g((t.x+e.x)/2,(t.y+e.y)/2)},ce.serialVersionUID=0x2d2172135f411c00,e(fe.prototype,{isIntersects:function(){return!this.isDisjoint()},isCovers:function(){var t=fe.isTrue(this.matrix[L.INTERIOR][L.INTERIOR])||fe.isTrue(this.matrix[L.INTERIOR][L.BOUNDARY])||fe.isTrue(this.matrix[L.BOUNDARY][L.INTERIOR])||fe.isTrue(this.matrix[L.BOUNDARY][L.BOUNDARY]);return t&&this.matrix[L.EXTERIOR][L.INTERIOR]===lt.FALSE&&this.matrix[L.EXTERIOR][L.BOUNDARY]===lt.FALSE},isCoveredBy:function(){var t=fe.isTrue(this.matrix[L.INTERIOR][L.INTERIOR])||fe.isTrue(this.matrix[L.INTERIOR][L.BOUNDARY])||fe.isTrue(this.matrix[L.BOUNDARY][L.INTERIOR])||fe.isTrue(this.matrix[L.BOUNDARY][L.BOUNDARY]);return t&&this.matrix[L.INTERIOR][L.EXTERIOR]===lt.FALSE&&this.matrix[L.BOUNDARY][L.EXTERIOR]===lt.FALSE},set:function(){if(1===arguments.length)for(var t=arguments[0],e=0;e=0&&e>=0&&this.setAtLeast(t,e,n)},isWithin:function(){return fe.isTrue(this.matrix[L.INTERIOR][L.INTERIOR])&&this.matrix[L.INTERIOR][L.EXTERIOR]===lt.FALSE&&this.matrix[L.BOUNDARY][L.EXTERIOR]===lt.FALSE},isTouches:function(t,e){return t>e?this.isTouches(e,t):t===lt.A&&e===lt.A||t===lt.L&&e===lt.L||t===lt.L&&e===lt.A||t===lt.P&&e===lt.A||t===lt.P&&e===lt.L?this.matrix[L.INTERIOR][L.INTERIOR]===lt.FALSE&&(fe.isTrue(this.matrix[L.INTERIOR][L.BOUNDARY])||fe.isTrue(this.matrix[L.BOUNDARY][L.INTERIOR])||fe.isTrue(this.matrix[L.BOUNDARY][L.BOUNDARY])):!1},isOverlaps:function(t,e){return t===lt.P&&e===lt.P||t===lt.A&&e===lt.A?fe.isTrue(this.matrix[L.INTERIOR][L.INTERIOR])&&fe.isTrue(this.matrix[L.INTERIOR][L.EXTERIOR])&&fe.isTrue(this.matrix[L.EXTERIOR][L.INTERIOR]):t===lt.L&&e===lt.L?1===this.matrix[L.INTERIOR][L.INTERIOR]&&fe.isTrue(this.matrix[L.INTERIOR][L.EXTERIOR])&&fe.isTrue(this.matrix[L.EXTERIOR][L.INTERIOR]):!1},isEquals:function(t,e){return t!==e?!1:fe.isTrue(this.matrix[L.INTERIOR][L.INTERIOR])&&this.matrix[L.INTERIOR][L.EXTERIOR]===lt.FALSE&&this.matrix[L.BOUNDARY][L.EXTERIOR]===lt.FALSE&&this.matrix[L.EXTERIOR][L.INTERIOR]===lt.FALSE&&this.matrix[L.EXTERIOR][L.BOUNDARY]===lt.FALSE},toString:function(){for(var t=new P(\"123456789\"),e=0;3>e;e++)for(var n=0;3>n;n++)t.setCharAt(3*e+n,lt.toDimensionSymbol(this.matrix[e][n]));return t.toString()},setAll:function(t){for(var e=0;3>e;e++)for(var n=0;3>n;n++)this.matrix[e][n]=t},get:function(t,e){return this.matrix[t][e]},transpose:function(){var t=this.matrix[1][0];return this.matrix[1][0]=this.matrix[0][1],this.matrix[0][1]=t,t=this.matrix[2][0],this.matrix[2][0]=this.matrix[0][2],this.matrix[0][2]=t,t=this.matrix[2][1],this.matrix[2][1]=this.matrix[1][2],this.matrix[1][2]=t,this},matches:function(t){if(9!==t.length)throw new i(\"Should be length 9: \"+t);for(var e=0;3>e;e++)for(var n=0;3>n;n++)if(!fe.matches(this.matrix[e][n],t.charAt(3*e+n)))return!1;return!0},add:function(t){for(var e=0;3>e;e++)for(var n=0;3>n;n++)this.setAtLeast(e,n,t.get(e,n))},isDisjoint:function(){return this.matrix[L.INTERIOR][L.INTERIOR]===lt.FALSE&&this.matrix[L.INTERIOR][L.BOUNDARY]===lt.FALSE&&this.matrix[L.BOUNDARY][L.INTERIOR]===lt.FALSE&&this.matrix[L.BOUNDARY][L.BOUNDARY]===lt.FALSE},isCrosses:function(t,e){return t===lt.P&&e===lt.L||t===lt.P&&e===lt.A||t===lt.L&&e===lt.A?fe.isTrue(this.matrix[L.INTERIOR][L.INTERIOR])&&fe.isTrue(this.matrix[L.INTERIOR][L.EXTERIOR]):t===lt.L&&e===lt.P||t===lt.A&&e===lt.P||t===lt.A&&e===lt.L?fe.isTrue(this.matrix[L.INTERIOR][L.INTERIOR])&&fe.isTrue(this.matrix[L.EXTERIOR][L.INTERIOR]):t===lt.L&&e===lt.L?0===this.matrix[L.INTERIOR][L.INTERIOR]:!1},interfaces_:function(){return[o]},getClass:function(){return fe}}),fe.matches=function(){if(Number.isInteger(arguments[0])&&\"string\"==typeof arguments[1]){var t=arguments[0],e=arguments[1];return e===lt.SYM_DONTCARE?!0:e===lt.SYM_TRUE&&(t>=0||t===lt.TRUE)?!0:e===lt.SYM_FALSE&&t===lt.FALSE?!0:e===lt.SYM_P&&t===lt.P?!0:e===lt.SYM_L&&t===lt.L?!0:e===lt.SYM_A&&t===lt.A}if(\"string\"==typeof arguments[0]&&\"string\"==typeof arguments[1]){var n=arguments[0],i=arguments[1],r=new fe(n);return r.matches(i)}},fe.isTrue=function(t){return t>=0||t===lt.TRUE};var lo=Object.freeze({Coordinate:g,CoordinateList:N,Envelope:C,LineSegment:ce,GeometryFactory:ie,Geometry:B,Point:Lt,LineString:St,LinearRing:bt,Polygon:Tt,GeometryCollection:ft,MultiPoint:Pt,MultiLineString:gt,MultiPolygon:Ot,Dimension:lt,IntersectionMatrix:fe});e(ge.prototype,{addPoint:function(t){this.ptCount+=1,this.ptCentSum.x+=t.x,this.ptCentSum.y+=t.y},setBasePoint:function(t){null===this.areaBasePt&&(this.areaBasePt=t)},addLineSegments:function(t){for(var e=0,n=0;n0&&this.addPoint(t[0])},addHole:function(t){for(var e=he.isCCW(t),n=0;n0)t.x=this.cg3.x/3/this.areasum2,t.y=this.cg3.y/3/this.areasum2;else if(this.totalLength>0)t.x=this.lineCentSum.x/this.totalLength,t.y=this.lineCentSum.y/this.totalLength;else{if(!(this.ptCount>0))return null;t.x=this.ptCentSum.x/this.ptCount,t.y=this.ptCentSum.y/this.ptCount}return t},addShell:function(t){t.length>0&&this.setBasePoint(t[0]);for(var e=!he.isCCW(t),n=0;nt||t>=this.size())throw new IndexOutOfBoundsException;return this.array_[t]},pe.prototype.push=function(t){return this.array_.push(t),t},pe.prototype.pop=function(t){if(0===this.array_.length)throw new de;return this.array_.pop()},pe.prototype.peek=function(){if(0===this.array_.length)throw new de;return this.array_[this.array_.length-1]},pe.prototype.empty=function(){return 0===this.array_.length},pe.prototype.isEmpty=function(){return this.empty()},pe.prototype.search=function(t){return this.array_.indexOf(t)},pe.prototype.size=function(){return this.array_.length},pe.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;n>e;e++)t.push(this.array_[e]);return t},e(ve.prototype,{filter:function(t){this.treeSet.contains(t)||(this.list.add(t),this.treeSet.add(t))},getCoordinates:function(){var t=new Array(this.list.size()).fill(null);return this.list.toArray(t)},interfaces_:function(){return[z]},getClass:function(){return ve}}),ve.filterCoordinates=function(t){for(var e=new ve,n=0;n50&&(t=this.reduce(this.inputPts));var e=this.preSort(t),n=this.grahamScan(e),i=this.toCoordinateArray(n);return this.lineOrPolygon(i)},padArray3:function(t){for(var e=new Array(3).fill(null),n=0;ne[2].y&&(e[2]=t[i]),t[i].x+t[i].y>e[3].x+e[3].y&&(e[3]=t[i]),t[i].x>e[4].x&&(e[4]=t[i]),t[i].x-t[i].y>e[5].x-e[5].y&&(e[5]=t[i]),t[i].y0;)e=n.pop();e=n.push(e),e=n.push(t[i])}return e=n.push(t[0]),n},interfaces_:function(){return[]},getClass:function(){return me}}),me.extractCoordinates=function(t){var e=new ve;return t.apply(e),e.getCoordinates()},e(ye.prototype,{compare:function(t,e){var n=t,i=e;return ye.polarCompare(this.origin,n,i)},interfaces_:function(){return[a]},getClass:function(){return ye}}),ye.polarCompare=function(t,e,n){var i=e.x-t.x,r=e.y-t.y,s=n.x-t.x,o=n.y-t.y,a=he.computeOrientation(t,e,n);\nif(a===he.COUNTERCLOCKWISE)return 1;if(a===he.CLOCKWISE)return-1;var u=i*i+r*r,l=s*s+o*o;return l>u?-1:u>l?1:0},me.RadialComparator=ye,e(xe.prototype,{transformPoint:function(t,e){return this.factory.createPoint(this.transformCoordinates(t.getCoordinateSequence(),t))},transformPolygon:function(t,e){var n=!0,i=this.transformLinearRing(t.getExteriorRing(),t);null!==i&&i instanceof bt&&!i.isEmpty()||(n=!1);for(var r=new I,s=0;s0&&4>i&&!this.preserveType?this.factory.createLineString(n):this.factory.createLinearRing(n)},interfaces_:function(){return[]},getClass:function(){return xe}}),e(Ee.prototype,{snapVertices:function(t,e){for(var n=this._isClosed?t.size()-1:t.size(),i=0;n>i;i++){var r=t.get(i),s=this.findSnapForVertex(r,e);null!==s&&(t.set(i,new g(s)),0===i&&this._isClosed&&t.set(t.size()-1,new g(s)))}},findSnapForVertex:function(t,e){for(var n=0;ni;i++){var r=e[i],s=this.findSegmentIndexToSnap(r,t);s>=0&&t.add(s+1,new g(r),!1)}},findSegmentIndexToSnap:function(t,e){for(var n=r.MAX_VALUE,i=-1,s=0;so&&(n=o,i=s)}return i},setAllowSnappingToSourceVertices:function(t){this.allowSnappingToSourceVertices=t},interfaces_:function(){return[]},getClass:function(){return Ee}}),Ee.isClosed=function(t){return t.length<=1?!1:t[0].equals2D(t[t.length-1])},e(Ie.prototype,{snapTo:function(t,e){var n=this.extractTargetCoordinates(t),i=new Ne(e,n);return i.transform(this.srcGeom)},snapToSelf:function(t,e){var n=this.extractTargetCoordinates(this.srcGeom),i=new Ne(t,n,!0),r=i.transform(this.srcGeom),s=r;return e&&R(s,Rt)&&(s=r.buffer(0)),s},computeSnapTolerance:function(t){var e=this.computeMinimumSegmentLength(t),n=e/10;return n},extractTargetCoordinates:function(t){for(var e=new at,n=t.getCoordinates(),i=0;ii&&(e=i)}return e},interfaces_:function(){return[]},getClass:function(){return Ie}}),Ie.snap=function(t,e,n){var i=new Array(2).fill(null),r=new Ie(t);i[0]=r.snapTo(e,n);var s=new Ie(e);return i[1]=s.snapTo(i[0],n),i},Ie.computeOverlaySnapTolerance=function(){if(1===arguments.length){var t=arguments[0],e=Ie.computeSizeBasedSnapTolerance(t),n=t.getPrecisionModel();if(n.getType()===ee.FIXED){var i=1/n.getScale()*2/1.415;i>e&&(e=i)}return e}if(2===arguments.length){var r=arguments[0],s=arguments[1];return Math.min(Ie.computeOverlaySnapTolerance(r),Ie.computeOverlaySnapTolerance(s))}},Ie.computeSizeBasedSnapTolerance=function(t){var e=t.getEnvelopeInternal(),n=Math.min(e.getHeight(),e.getWidth()),i=n*Ie.SNAP_PRECISION_FACTOR;return i},Ie.snapToSelf=function(t,e,n){var i=new Ie(t);return i.snapToSelf(e,n)},Ie.SNAP_PRECISION_FACTOR=1e-9,h(Ne,xe),e(Ne.prototype,{snapLine:function(t,e){var n=new Ee(t,this.snapTolerance);return n.setAllowSnappingToSourceVertices(this.isSelfSnap),n.snapTo(e)},transformCoordinates:function(t,e){var n=t.toCoordinateArray(),i=this.snapLine(n,this.snapPts);return this.factory.getCoordinateSequenceFactory().create(i)},interfaces_:function(){return[]},getClass:function(){return Ne}}),e(Ce.prototype,{getCommon:function(){return r.longBitsToDouble(this.commonBits)},add:function(t){var e=r.doubleToLongBits(t);if(this.isFirst)return this.commonBits=e,this.commonSignExp=Ce.signExpBits(this.commonBits),this.isFirst=!1,null;var n=Ce.signExpBits(e);return n!==this.commonSignExp?(this.commonBits=0,null):(this.commonMantissaBitsCount=Ce.numCommonMostSigMantissaBits(this.commonBits,e),void(this.commonBits=Ce.zeroLowerBits(this.commonBits,64-(12+this.commonMantissaBitsCount))))},toString:function(){if(1===arguments.length){var t=arguments[0],e=r.longBitsToDouble(t),n=Long.toBinaryString(t),i=\"0000000000000000000000000000000000000000000000000000000000000000\"+n,s=i.substring(i.length-64),o=s.substring(0,1)+\" \"+s.substring(1,12)+\"(exp) \"+s.substring(12)+\" [ \"+e+\" ]\";return o}},interfaces_:function(){return[]},getClass:function(){return Ce}}),Ce.getBit=function(t,e){var n=1<>52},Ce.zeroLowerBits=function(t,e){var n=(1<=0;i--){if(Ce.getBit(t,i)!==Ce.getBit(e,i))return n;n++}return 52},e(Se.prototype,{addCommonBits:function(t){var e=new Le(this.commonCoord);t.apply(e),t.geometryChanged()},removeCommonBits:function(t){if(0===this.commonCoord.x&&0===this.commonCoord.y)return t;var e=new g(this.commonCoord);e.x=-e.x,e.y=-e.y;var n=new Le(e);return t.apply(n),t.geometryChanged(),t},getCommonCoordinate:function(){return this.commonCoord},add:function(t){t.apply(this.ccFilter),this.commonCoord=this.ccFilter.getCommonCoordinate()},interfaces_:function(){return[]},getClass:function(){return Se}}),e(we.prototype,{filter:function(t){this.commonBitsX.add(t.x),this.commonBitsY.add(t.y)},getCommonCoordinate:function(){return new g(this.commonBitsX.getCommon(),this.commonBitsY.getCommon())},interfaces_:function(){return[z]},getClass:function(){return we}}),e(Le.prototype,{filter:function(t,e){var n=t.getOrdinate(e,0)+this.trans.x,i=t.getOrdinate(e,1)+this.trans.y;t.setOrdinate(e,0,n),t.setOrdinate(e,1,i)},isDone:function(){return!1},isGeometryChanged:function(){return!0},interfaces_:function(){return[ct]},getClass:function(){return Le}}),Se.CommonCoordinateFilter=we,Se.Translater=Le,e(Re.prototype,{next:function(){if(this.atStart)return this.atStart=!1,Re.isAtomic(this.parent)&&this.index++,this.parent;if(null!==this.subcollectionIterator){if(this.subcollectionIterator.hasNext())return this.subcollectionIterator.next();this.subcollectionIterator=null}if(this.index>=this.max)throw new x;var t=this.parent.getGeometryN(this.index++);return t instanceof ft?(this.subcollectionIterator=new Re(t),this.subcollectionIterator.next()):t},remove:function(){throw new UnsupportedOperationException(this.getClass().getName())},hasNext:function(){if(this.atStart)return!0;if(null!==this.subcollectionIterator){if(this.subcollectionIterator.hasNext())return!0;this.subcollectionIterator=null}return!(this.index>=this.max)},interfaces_:function(){return[p]},getClass:function(){return Re}}),Re.isAtomic=function(t){return!(t instanceof ft)},e(Te.prototype,{locateInternal:function(){if(arguments[0]instanceof g&&arguments[1]instanceof Tt){var t=arguments[0],e=arguments[1];if(e.isEmpty())return L.EXTERIOR;var n=e.getExteriorRing(),i=this.locateInPolygonRing(t,n);if(i===L.EXTERIOR)return L.EXTERIOR;if(i===L.BOUNDARY)return L.BOUNDARY;for(var r=0;r0||this.isIn?L.INTERIOR:L.EXTERIOR)},interfaces_:function(){return[]},getClass:function(){return Te}}),e(Pe.prototype,{interfaces_:function(){return[]},getClass:function(){return Pe}}),Pe.octant=function(){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1];if(0===t&&0===e)throw new i(\"Cannot compute the octant for point ( \"+t+\", \"+e+\" )\");var n=Math.abs(t),r=Math.abs(e);return t>=0?e>=0?n>=r?0:1:n>=r?7:6:e>=0?n>=r?3:2:n>=r?4:5}if(arguments[0]instanceof g&&arguments[1]instanceof g){var s=arguments[0],o=arguments[1],a=o.x-s.x,u=o.y-s.y;if(0===a&&0===u)throw new i(\"Cannot compute the octant for two identical points \"+s);return Pe.octant(a,u)}},e(be.prototype,{getCoordinates:function(){},size:function(){},getCoordinate:function(t){},isClosed:function(){},setData:function(t){},getData:function(){},interfaces_:function(){return[]},getClass:function(){return be}}),e(Oe.prototype,{getCoordinates:function(){return this.pts},size:function(){return this.pts.length},getCoordinate:function(t){return this.pts[t]},isClosed:function(){return this.pts[0].equals(this.pts[this.pts.length-1])},getSegmentOctant:function(t){return t===this.pts.length-1?-1:Pe.octant(this.getCoordinate(t),this.getCoordinate(t+1))},setData:function(t){this.data=t},getData:function(){return this.data},toString:function(){return se.toLineString(new Gt(this.pts))},interfaces_:function(){return[be]},getClass:function(){return Oe}}),e(_e.prototype,{getBounds:function(){},interfaces_:function(){return[]},getClass:function(){return _e}}),e(Me.prototype,{getItem:function(){return this.item},getBounds:function(){return this.bounds},interfaces_:function(){return[_e,u]},getClass:function(){return Me}}),e(De.prototype,{poll:function(){if(this.isEmpty())return null;var t=this.items.get(1);return this.items.set(1,this.items.get(this._size)),this._size-=1,this.reorder(1),t},size:function(){return this._size},reorder:function(t){for(var e=null,n=this.items.get(t);2*t<=this._size&&(e=2*t,e!==this._size&&this.items.get(e+1).compareTo(this.items.get(e))<0&&e++,this.items.get(e).compareTo(n)<0);t=e)this.items.set(t,this.items.get(e));this.items.set(t,n)},clear:function(){this._size=0,this.items.clear()},isEmpty:function(){return 0===this._size},add:function(t){this.items.add(null),this._size+=1;var e=this._size;for(this.items.set(0,t);t.compareTo(this.items.get(Math.trunc(e/2)))<0;e/=2)this.items.set(e,this.items.get(Math.trunc(e/2)));this.items.set(e,t)},interfaces_:function(){return[]},getClass:function(){return De}}),e(Ae.prototype,{visitItem:function(t){},interfaces_:function(){return[]},getClass:function(){return Ae}}),e(Fe.prototype,{insert:function(t,e){},remove:function(t,e){},query:function(){if(1===arguments.length){arguments[0]}else if(2===arguments.length){arguments[0],arguments[1]}},interfaces_:function(){return[]},getClass:function(){return Fe}}),e(Ge.prototype,{getLevel:function(){return this.level},size:function(){return this.childBoundables.size()},getChildBoundables:function(){return this.childBoundables},addChildBoundable:function(t){f.isTrue(null===this.bounds),this.childBoundables.add(t)},isEmpty:function(){return this.childBoundables.isEmpty()},getBounds:function(){return null===this.bounds&&(this.bounds=this.computeBounds()),this.bounds},interfaces_:function(){return[_e,u]},getClass:function(){return Ge}}),Ge.serialVersionUID=0x5a1e55ec41369800;var ho={reverseOrder:function(){return{compare:function(t,e){return e.compareTo(t)}}},min:function(t){return ho.sort(t),t.get(0)},sort:function(t,e){var n=t.toArray();e?ut.sort(n,e):ut.sort(n);for(var i=t.iterator(),r=0,s=n.length;s>r;r++)i.next(),i.set(n[r])},singletonList:function(t){var e=new I;return e.add(t),e}};e(qe.prototype,{expandToQueue:function(t,e){var n=qe.isComposite(this.boundable1),r=qe.isComposite(this.boundable2);if(n&&r)return qe.area(this.boundable1)>qe.area(this.boundable2)?(this.expand(this.boundable1,this.boundable2,t,e),null):(this.expand(this.boundable2,this.boundable1,t,e),null);if(n)return this.expand(this.boundable1,this.boundable2,t,e),null;if(r)return this.expand(this.boundable2,this.boundable1,t,e),null;throw new i(\"neither boundable is composite\")},isLeaves:function(){return!(qe.isComposite(this.boundable1)||qe.isComposite(this.boundable2))},compareTo:function(t){var e=t;return this._distancee._distance?1:0},expand:function(t,e,n,i){for(var r=t.getChildBoundables(),s=r.iterator();s.hasNext();){var o=s.next(),a=new qe(o,e,this.itemDistance);a.getDistance()-2),i.getLevel()===n)return r.add(i),null;for(var s=i.getChildBoundables().iterator();s.hasNext();){var o=s.next();o instanceof Ge?this.boundablesAtLevel(n,o,r):(f.isTrue(o instanceof Me),-1===n&&r.add(o))}return null}},query:function(){if(1===arguments.length){var t=arguments[0];this.build();var e=new I;return this.isEmpty()?e:(this.getIntersectsOp().intersects(this.root.getBounds(),t)&&this.query(t,this.root,e),e)}if(2===arguments.length){var n=arguments[0],i=arguments[1];if(this.build(),this.isEmpty())return null;this.getIntersectsOp().intersects(this.root.getBounds(),n)&&this.query(n,this.root,i)}else if(3===arguments.length)if(R(arguments[2],Ae)&&arguments[0]instanceof Object&&arguments[1]instanceof Ge)for(var r=arguments[0],s=arguments[1],o=arguments[2],a=s.getChildBoundables(),u=0;ue&&(e=r)}}return e+1}},createParentBoundables:function(t,e){f.isTrue(!t.isEmpty());var n=new I;n.add(this.createNode(e));var i=new I(t);ho.sort(i,this.getComparator());for(var r=i.iterator();r.hasNext();){var s=r.next();this.lastNode(n).getChildBoundables().size()===this.getNodeCapacity()&&n.add(this.createNode(e)),this.lastNode(n).addChildBoundable(s)}return n},isEmpty:function(){return this.built?this.root.isEmpty():this.itemBoundables.isEmpty()},interfaces_:function(){return[u]},getClass:function(){return Be}}),Be.compareDoubles=function(t,e){return t>e?1:e>t?-1:0},Be.IntersectsOp=ze,Be.serialVersionUID=-0x35ef64c82d4c5400,Be.DEFAULT_NODE_CAPACITY=10,e(Ve.prototype,{distance:function(t,e){},interfaces_:function(){return[]},getClass:function(){return Ve}}),h(ke,Be),e(ke.prototype,{createParentBoundablesFromVerticalSlices:function(t,e){f.isTrue(t.length>0);for(var n=new I,i=0;is;s++){i[s]=new I;for(var o=0;r.hasNext()&&n>o;){var a=r.next();i[s].add(a),o++}}return i},query:function(){if(1===arguments.length){var t=arguments[0];return Be.prototype.query.call(this,t)}if(2===arguments.length){var e=arguments[0],n=arguments[1];Be.prototype.query.call(this,e,n)}else if(3===arguments.length)if(R(arguments[2],Ae)&&arguments[0]instanceof Object&&arguments[1]instanceof Ge){var i=arguments[0],r=arguments[1],s=arguments[2];Be.prototype.query.call(this,i,r,s)}else if(R(arguments[2],y)&&arguments[0]instanceof Object&&arguments[1]instanceof Ge){var o=arguments[0],a=arguments[1],u=arguments[2];Be.prototype.query.call(this,o,a,u)}},getComparator:function(){return ke.yComparator},createParentBoundablesFromVerticalSlice:function(t,e){return Be.prototype.createParentBoundables.call(this,t,e)},remove:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return Be.prototype.remove.call(this,t,e)}return Be.prototype.remove.apply(this,arguments)},depth:function(){return 0===arguments.length?Be.prototype.depth.call(this):Be.prototype.depth.apply(this,arguments)},createParentBoundables:function(t,e){f.isTrue(!t.isEmpty());var n=Math.trunc(Math.ceil(t.size()/this.getNodeCapacity())),i=new I(t);ho.sort(i,ke.xComparator);var r=this.verticalSlices(i,Math.trunc(Math.ceil(Math.sqrt(n))));return this.createParentBoundablesFromVerticalSlices(r,e)},nearestNeighbour:function(){if(1===arguments.length){if(R(arguments[0],Ve)){var t=arguments[0],e=new qe(this.getRoot(),this.getRoot(),t);return this.nearestNeighbour(e)}if(arguments[0]instanceof qe){var n=arguments[0];return this.nearestNeighbour(n,r.POSITIVE_INFINITY)}}else if(2===arguments.length){if(arguments[0]instanceof ke&&R(arguments[1],Ve)){var i=arguments[0],s=arguments[1],e=new qe(this.getRoot(),i.getRoot(),s);return this.nearestNeighbour(e)}if(arguments[0]instanceof qe&&\"number\"==typeof arguments[1]){var o=arguments[0],a=arguments[1],u=a,l=null,h=new De;for(h.add(o);!h.isEmpty()&&u>0;){var c=h.poll(),f=c.getDistance();if(f>=u)break;c.isLeaves()?(u=f,l=c):c.expandToQueue(h,u)}return[l.getBoundable(0).getItem(),l.getBoundable(1).getItem()]}}else if(3===arguments.length){var g=arguments[0],d=arguments[1],p=arguments[2],v=new Me(g,d),e=new qe(this.getRoot(),v,p);return this.nearestNeighbour(e)[0]}},interfaces_:function(){return[Fe,u]},getClass:function(){return ke}}),ke.centreX=function(t){return ke.avg(t.getMinX(),t.getMaxX())},ke.avg=function(t,e){return(t+e)/2},ke.centreY=function(t){return ke.avg(t.getMinY(),t.getMaxY())},h(Ye,Ge),e(Ye.prototype,{computeBounds:function(){for(var t=null,e=this.getChildBoundables().iterator();e.hasNext();){var n=e.next();null===t?t=new C(n.getBounds()):t.expandToInclude(n.getBounds())}return t},interfaces_:function(){return[]},getClass:function(){return Ye}}),ke.STRtreeNode=Ye,ke.serialVersionUID=0x39920f7d5f261e0,ke.xComparator={interfaces_:function(){return[a]},compare:function(t,e){return Be.compareDoubles(ke.centreX(t.getBounds()),ke.centreX(e.getBounds()))}},ke.yComparator={interfaces_:function(){return[a]},compare:function(t,e){return Be.compareDoubles(ke.centreY(t.getBounds()),ke.centreY(e.getBounds()))}},ke.intersectsOp={interfaces_:function(){return[IntersectsOp]},intersects:function(t,e){return t.intersects(e)}},ke.DEFAULT_NODE_CAPACITY=10,e(Ue.prototype,{interfaces_:function(){return[]},getClass:function(){return Ue}}),Ue.relativeSign=function(t,e){return e>t?-1:t>e?1:0},Ue.compare=function(t,e,n){if(e.equals2D(n))return 0;var i=Ue.relativeSign(e.x,n.x),r=Ue.relativeSign(e.y,n.y);switch(t){case 0:return Ue.compareValue(i,r);case 1:return Ue.compareValue(r,i);case 2:return Ue.compareValue(r,-i);case 3:return Ue.compareValue(-i,r);case 4:return Ue.compareValue(-i,-r);case 5:return Ue.compareValue(-r,-i);case 6:return Ue.compareValue(-r,i);case 7:return Ue.compareValue(i,-r)}return f.shouldNeverReachHere(\"invalid octant value\"),0},Ue.compareValue=function(t,e){return 0>t?-1:t>0?1:0>e?-1:e>0?1:0},e(Xe.prototype,{getCoordinate:function(){return this.coord},print:function(t){t.print(this.coord),t.print(\" seg # = \"+this.segmentIndex)},compareTo:function(t){var e=t;return this.segmentIndexe.segmentIndex?1:this.coord.equals2D(e.coord)?0:Ue.compare(this.segmentOctant,this.coord,e.coord)},isEndPoint:function(t){return 0!==this.segmentIndex||this._isInterior?this.segmentIndex===t:!0},isInterior:function(){return this._isInterior},interfaces_:function(){return[s]},getClass:function(){return Xe}}),e(He.prototype,{getSplitCoordinates:function(){var t=new N;this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next();this.addEdgeCoordinates(n,i,t),n=i}return t.toCoordinateArray()},addCollapsedNodes:function(){var t=new I;this.findCollapsesFromInsertedNodes(t),this.findCollapsesFromExistingVertices(t);for(var e=t.iterator();e.hasNext();){var n=e.next().intValue();this.add(this.edge.getCoordinate(n),n)}},print:function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){var n=e.next();n.print(t)}},findCollapsesFromExistingVertices:function(t){for(var e=0;ethis.currNode.segmentIndex,null)},remove:function(){throw new UnsupportedOperationException(this.getClass().getName())},hasNext:function(){return null!==this.nextNode},readNextNode:function(){this.nodeIt.hasNext()?this.nextNode=this.nodeIt.next():this.nextNode=null},interfaces_:function(){return[p]},getClass:function(){return We}}),e(je.prototype,{addIntersection:function(t,e){},interfaces_:function(){return[be]},getClass:function(){return je}}),e(Ke.prototype,{getCoordinates:function(){return this.pts},size:function(){return this.pts.length},getCoordinate:function(t){return this.pts[t]},isClosed:function(){return this.pts[0].equals(this.pts[this.pts.length-1])},getSegmentOctant:function(t){return t===this.pts.length-1?-1:this.safeOctant(this.getCoordinate(t),this.getCoordinate(t+1))},setData:function(t){this.data=t},safeOctant:function(t,e){return t.equals2D(e)?0:Pe.octant(t,e)},getData:function(){return this.data},addIntersection:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.addIntersectionNode(t,e)}else if(4===arguments.length){var n=arguments[0],i=arguments[1],r=(arguments[2],arguments[3]),s=new g(n.getIntersection(r));this.addIntersection(s,i)}},toString:function(){return se.toLineString(new Gt(this.pts))},getNodeList:function(){return this.nodeList},addIntersectionNode:function(t,e){var n=e,i=n+1;if(ie&&this.computeSelect(t,e,o,i),n>o&&this.computeSelect(t,o,n,i)},getCoordinates:function(){for(var t=new Array(this.end-this.start+1).fill(null),e=0,n=this.start;n<=this.end;n++)t[e++]=this.pts[n];return t},computeOverlaps:function(t,e){this.computeOverlapsInternal(this.start,this.end,t,t.start,t.end,e)},setId:function(t){this.id=t},select:function(t,e){this.computeSelect(t,this.start,this.end,e)},getEnvelope:function(){if(null===this.env){var t=this.pts[this.start],e=this.pts[this.end];this.env=new C(t,e)}return this.env},getEndIndex:function(){return this.end},getStartIndex:function(){return this.start},getContext:function(){return this.context},getId:function(){return this.id},computeOverlapsInternal:function(t,e,n,i,r,s){var o=this.pts[t],a=this.pts[e],u=n.pts[i],l=n.pts[r];if(e-t===1&&r-i===1)return s.overlap(this,t,n,i),null;if(s.tempEnv1.init(o,a),s.tempEnv2.init(u,l),!s.tempEnv1.intersects(s.tempEnv2))return null;var h=Math.trunc((t+e)/2),c=Math.trunc((i+r)/2);h>t&&(c>i&&this.computeOverlapsInternal(t,h,n,i,c,s),r>c&&this.computeOverlapsInternal(t,h,n,c,r,s)),e>h&&(c>i&&this.computeOverlapsInternal(h,e,n,i,c,s),r>c&&this.computeOverlapsInternal(h,e,n,c,r,s))},interfaces_:function(){return[]},getClass:function(){return Qe}}),e(Je.prototype,{interfaces_:function(){return[]},getClass:function(){return Je}}),Je.isNorthern=function(t){return t===Je.NE||t===Je.NW},Je.isOpposite=function(t,e){if(t===e)return!1;var n=(t-e+4)%4;return 2===n},Je.commonHalfPlane=function(t,e){if(t===e)return t;var n=(t-e+4)%4;if(2===n)return-1;var i=e>t?t:e,r=t>e?t:e;return 0===i&&3===r?3:i},Je.isInHalfPlane=function(t,e){return e===Je.SE?t===Je.SE||t===Je.SW:t===e||t===e+1},Je.quadrant=function(){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1];if(0===t&&0===e)throw new i(\"Cannot compute the quadrant for point ( \"+t+\", \"+e+\" )\");return t>=0?e>=0?Je.NE:Je.SE:e>=0?Je.NW:Je.SW}if(arguments[0]instanceof g&&arguments[1]instanceof g){var n=arguments[0],r=arguments[1];if(r.x===n.x&&r.y===n.y)throw new i(\"Cannot compute the quadrant for two identical points \"+n);return r.x>=n.x?r.y>=n.y?Je.NE:Je.SE:r.y>=n.y?Je.NW:Je.SW}},Je.NE=0,Je.NW=1,Je.SW=2,Je.SE=3,e($e.prototype,{interfaces_:function(){return[]},getClass:function(){return $e}}),$e.getChainStartIndices=function(t){var e=0,n=new I;n.add(new b(e));do{var i=$e.findChainEnd(t,e);n.add(new b(i)),e=i}while(e=t.length-1)return t.length-1;for(var i=Je.quadrant(t[n],t[n+1]),r=e+1;rn.getId()&&(n.computeOverlaps(s,t),this.nOverlaps++),this.segInt.isDone())return null}},interfaces_:function(){return[]},getClass:function(){return nn}}),h(rn,Ze),e(rn.prototype,{overlap:function(){if(4!==arguments.length)return Ze.prototype.overlap.apply(this,arguments);var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3],r=t.getContext(),s=n.getContext();this.si.processIntersections(r,e,s,i)},interfaces_:function(){return[]},getClass:function(){return rn}}),nn.SegmentOverlapAction=rn,h(sn,l),e(sn.prototype,{getCoordinate:function(){return this.pt},interfaces_:function(){return[]},getClass:function(){return sn}}),sn.msgWithCoord=function(t,e){return null!==e?t+\" [ \"+e+\" ]\":t},e(on.prototype,{processIntersections:function(t,e,n,i){},isDone:function(){},interfaces_:function(){return[]},getClass:function(){return on}}),e(an.prototype,{getInteriorIntersection:function(){return this.interiorIntersection},setCheckEndSegmentsOnly:function(t){this.isCheckEndSegmentsOnly=t},getIntersectionSegments:function(){return this.intSegments},count:function(){return this.intersectionCount},getIntersections:function(){return this.intersections},setFindAllIntersections:function(t){this.findAllIntersections=t},setKeepIntersections:function(t){this.keepIntersections=t},processIntersections:function(t,e,n,i){if(!this.findAllIntersections&&this.hasIntersection())return null;if(t===n&&e===i)return null;if(this.isCheckEndSegmentsOnly){var r=this.isEndSegment(t,e)||this.isEndSegment(n,i);if(!r)return null}var s=t.getCoordinates()[e],o=t.getCoordinates()[e+1],a=n.getCoordinates()[i],u=n.getCoordinates()[i+1];this.li.computeIntersection(s,o,a,u),this.li.hasIntersection()&&this.li.isInteriorIntersection()&&(this.intSegments=new Array(4).fill(null),this.intSegments[0]=s,this.intSegments[1]=o,this.intSegments[2]=a,this.intSegments[3]=u,this.interiorIntersection=this.li.getIntersection(0),this.keepIntersections&&this.intersections.add(this.interiorIntersection),this.intersectionCount++)},isEndSegment:function(t,e){return 0===e?!0:e>=t.size()-2},hasIntersection:function(){return null!==this.interiorIntersection},isDone:function(){return this.findAllIntersections?!1:null!==this.interiorIntersection},interfaces_:function(){return[on]},getClass:function(){return an}}),an.createAllIntersectionsFinder=function(t){var e=new an(t);return e.setFindAllIntersections(!0),e},an.createAnyIntersectionFinder=function(t){return new an(t)},an.createIntersectionCounter=function(t){var e=new an(t);return e.setFindAllIntersections(!0),e.setKeepIntersections(!1),e},e(un.prototype,{execute:function(){return null!==this.segInt?null:void this.checkInteriorIntersections()},getIntersections:function(){return this.segInt.getIntersections()},isValid:function(){return this.execute(),this._isValid},setFindAllIntersections:function(t){this.findAllIntersections=t},checkInteriorIntersections:function(){this._isValid=!0,this.segInt=new an(this.li),this.segInt.setFindAllIntersections(this.findAllIntersections);var t=new nn;return t.setSegmentIntersector(this.segInt),t.computeNodes(this.segStrings),this.segInt.hasIntersection()?(this._isValid=!1,null):void 0},checkValid:function(){if(this.execute(),!this._isValid)throw new sn(this.getErrorMessage(),this.segInt.getInteriorIntersection())},getErrorMessage:function(){if(this._isValid)return\"no intersections found\";var t=this.segInt.getIntersectionSegments();return\"found non-noded intersection between \"+se.toLineString(t[0],t[1])+\" and \"+se.toLineString(t[2],t[3])},interfaces_:function(){return[]},getClass:function(){return un}}),un.computeIntersections=function(t){var e=new un(t);return e.setFindAllIntersections(!0),e.isValid(),e.getIntersections()},e(ln.prototype,{checkValid:function(){this.nv.checkValid()},interfaces_:function(){return[]},getClass:function(){return ln}}),ln.toSegmentStrings=function(t){for(var e=new I,n=t.iterator();n.hasNext();){var i=n.next();e.add(new Oe(i.getCoordinates(),i))}return e},ln.checkValid=function(t){var e=new ln(t);e.checkValid()},e(hn.prototype,{map:function(t){for(var e=new I,n=0;nthis.location.length){var e=new Array(3).fill(null);e[cn.ON]=this.location[cn.ON],e[cn.LEFT]=L.NONE,e[cn.RIGHT]=L.NONE,this.location=e}for(var n=0;n1&&t.append(L.toLocationSymbol(this.location[cn.LEFT])),t.append(L.toLocationSymbol(this.location[cn.ON])),this.location.length>1&&t.append(L.toLocationSymbol(this.location[cn.RIGHT])),t.toString()},setLocations:function(t,e,n){this.location[cn.ON]=t,this.location[cn.LEFT]=e,this.location[cn.RIGHT]=n},get:function(t){return t1},isAnyNull:function(){for(var t=0;te;e++)null===this.elt[e]&&null!==t.elt[e]?this.elt[e]=new fn(t.elt[e]):this.elt[e].merge(t.elt[e])},flip:function(){this.elt[0].flip(),this.elt[1].flip()},getLocation:function(){if(1===arguments.length){var t=arguments[0];return this.elt[t].get(cn.ON)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return this.elt[e].get(n)}},toString:function(){var t=new P;return null!==this.elt[0]&&(t.append(\"A:\"),t.append(this.elt[0].toString())),null!==this.elt[1]&&(t.append(\" B:\"),t.append(this.elt[1].toString())),t.toString()},isArea:function(){if(0===arguments.length)return this.elt[0].isArea()||this.elt[1].isArea();if(1===arguments.length){var t=arguments[0];return this.elt[t].isArea()}},isAnyNull:function(t){return this.elt[t].isAnyNull()},setLocation:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.elt[t].setLocation(cn.ON,e)}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this.elt[n].setLocation(i,r)}},isEqualOnSide:function(t,e){return this.elt[0].isEqualOnSide(t.elt[0],e)&&this.elt[1].isEqualOnSide(t.elt[1],e)},allPositionsEqual:function(t,e){return this.elt[t].allPositionsEqual(e)},toLine:function(t){this.elt[t].isArea()&&(this.elt[t]=new fn(this.elt[t].location[0]))},interfaces_:function(){return[]},getClass:function(){return gn}}),gn.toLineLabel=function(t){for(var e=new gn(L.NONE),n=0;2>n;n++)e.setLocation(n,t.getLocation(n));return e},e(dn.prototype,{computeRing:function(){if(null!==this.ring)return null;for(var t=new Array(this.pts.size()).fill(null),e=0;ethis.maxNodeDegree&&(this.maxNodeDegree=n),t=this.getNext(t)}while(t!==this.startDe);this.maxNodeDegree*=2},addPoints:function(t,e,n){var i=t.getCoordinates();if(e){var r=1;n&&(r=0);for(var s=r;s=0;s--)this.pts.add(i[s])}},isHole:function(){return this._isHole},setInResult:function(){var t=this.startDe;do t.getEdge().setInResult(!0),t=t.getNext();while(t!==this.startDe)},containsPoint:function(t){var e=this.getLinearRing(),n=e.getEnvelopeInternal();if(!n.contains(t))return!1;if(!he.isPointInRing(t,e.getCoordinates()))return!1;for(var i=this.holes.iterator();i.hasNext();){var r=i.next();if(r.containsPoint(t))return!1}return!0},addHole:function(t){this.holes.add(t)},isShell:function(){return null===this.shell},getLabel:function(){return this.label},getEdges:function(){return this.edges},getMaxNodeDegree:function(){return this.maxNodeDegree<0&&this.computeMaxNodeDegree(),this.maxNodeDegree},getShell:function(){return this.shell},mergeLabel:function(){if(1===arguments.length){var t=arguments[0];this.mergeLabel(t,0),this.mergeLabel(t,1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=e.getLocation(n,cn.RIGHT);if(i===L.NONE)return null;if(this.label.getLocation(n)===L.NONE)return this.label.setLocation(n,i),null}},setShell:function(t){this.shell=t,null!==t&&t.addHole(this)},toPolygon:function(t){for(var e=new Array(this.holes.size()).fill(null),n=0;n=2,\"found partial label\"),this.computeIM(t)},isInResult:function(){return this._isInResult},isVisited:function(){return this._isVisited},interfaces_:function(){return[]},getClass:function(){return mn}}),h(yn,mn),e(yn.prototype,{isIncidentEdgeInResult:function(){for(var t=this.getEdges().getEdges().iterator();t.hasNext();){var e=t.next();if(e.getEdge().isInResult())return!0}return!1},isIsolated:function(){return 1===this.label.getGeometryCount()},getCoordinate:function(){return this.coord},print:function(t){t.println(\"node \"+this.coord+\" lbl: \"+this.label)},computeIM:function(t){},computeMergedLocation:function(t,e){var n=L.NONE;if(n=this.label.getLocation(e),!t.isNull(e)){var i=t.getLocation(e);n!==L.BOUNDARY&&(n=i)}return n},setLabel:function(){if(2!==arguments.length)return mn.prototype.setLabel.apply(this,arguments);var t=arguments[0],e=arguments[1];null===this.label?this.label=new gn(t,e):this.label.setLocation(t,e)},getEdges:function(){return this.edges},mergeLabel:function(){if(arguments[0]instanceof yn){var t=arguments[0];this.mergeLabel(t.label)}else if(arguments[0]instanceof gn)for(var e=arguments[0],n=0;2>n;n++){var i=this.computeMergedLocation(e,n),r=this.label.getLocation(n);r===L.NONE&&this.label.setLocation(n,i)}},add:function(t){this.edges.insert(t),t.setNode(this)},setLabelBoundary:function(t){if(null===this.label)return null;var e=L.NONE;null!==this.label&&(e=this.label.getLocation(t));var n=null;switch(e){case L.BOUNDARY:n=L.INTERIOR;break;case L.INTERIOR:n=L.BOUNDARY;break;default:n=L.BOUNDARY}this.label.setLocation(t,n)},interfaces_:function(){return[]},getClass:function(){return yn}}),e(xn.prototype,{find:function(t){return this.nodeMap.get(t)},addNode:function(){if(arguments[0]instanceof g){var t=arguments[0],e=this.nodeMap.get(t);return null===e&&(e=this.nodeFact.createNode(t),this.nodeMap.put(t,e)),e}if(arguments[0]instanceof yn){var n=arguments[0],e=this.nodeMap.get(n.getCoordinate());return null===e?(this.nodeMap.put(n.getCoordinate(),n),n):(e.mergeLabel(n),e)}},print:function(t){for(var e=this.iterator();e.hasNext();){var n=e.next();n.print(t)}},iterator:function(){return this.nodeMap.values().iterator()},values:function(){return this.nodeMap.values()},getBoundaryNodes:function(t){for(var e=new I,n=this.iterator();n.hasNext();){var i=n.next();i.getLabel().getLocation(t)===L.BOUNDARY&&e.add(i)}return e},add:function(t){var e=t.getCoordinate(),n=this.addNode(e);n.add(t)},interfaces_:function(){return[]},getClass:function(){return xn}}),e(En.prototype,{compareDirection:function(t){return this.dx===t.dx&&this.dy===t.dy?0:this.quadrant>t.quadrant?1:this.quadrante;e++)this.label.isArea(e)&&this.label.getLocation(e,cn.LEFT)===L.INTERIOR&&this.label.getLocation(e,cn.RIGHT)===L.INTERIOR||(t=!1);return t},setNextMin:function(t){this.nextMin=t},print:function(t){En.prototype.print.call(this,t),t.print(\" \"+this.depth[cn.LEFT]+\"/\"+this.depth[cn.RIGHT]),t.print(\" (\"+this.getDepthDelta()+\")\"),this._isInResult&&t.print(\" inResult\")},setMinEdgeRing:function(t){this.minEdgeRing=t},isLineEdge:function(){var t=this.label.isLine(0)||this.label.isLine(1),e=!this.label.isArea(0)||this.label.allPositionsEqual(0,L.EXTERIOR),n=!this.label.isArea(1)||this.label.allPositionsEqual(1,L.EXTERIOR);return t&&e&&n},setEdgeRing:function(t){this.edgeRing=t},getMinEdgeRing:function(){return this.minEdgeRing},getDepthDelta:function(){var t=this.edge.getDepthDelta();return this._isForward||(t=-t),t},setInResult:function(t){this._isInResult=t},getSym:function(){return this.sym},isForward:function(){return this._isForward},getEdge:function(){return this.edge},printEdge:function(t){this.print(t),t.print(\" \"),this._isForward?this.edge.print(t):this.edge.printReverse(t)},setSym:function(t){this.sym=t},setVisitedEdge:function(t){this.setVisited(t),this.sym.setVisited(t)},setEdgeDepths:function(t,e){var n=this.getEdge().getDepthDelta();this._isForward||(n=-n);var i=1;t===cn.LEFT&&(i=-1);var r=cn.opposite(t),s=n*i,o=e+s;this.setDepth(t,e),this.setDepth(r,o)},getEdgeRing:function(){return this.edgeRing},isInResult:function(){return this._isInResult},setNext:function(t){this.next=t},isVisited:function(){return this._isVisited},interfaces_:function(){return[]},getClass:function(){return In}}),In.depthFactor=function(t,e){return t===L.EXTERIOR&&e===L.INTERIOR?1:t===L.INTERIOR&&e===L.EXTERIOR?-1:0},e(Nn.prototype,{createNode:function(t){return new yn(t,null)},interfaces_:function(){return[]},getClass:function(){return Nn}}),e(Cn.prototype,{printEdges:function(t){t.println(\"Edges:\");for(var e=0;e2){s.linkDirectedEdgesForMinimalEdgeRings();var o=s.buildMinimalRings(),a=this.findShell(o);null!==a?(this.placePolygonHoles(a,o),e.add(a)):n.addAll(o)}else i.add(s)}return i},containsPoint:function(t){for(var e=this.shellList.iterator();e.hasNext();){var n=e.next();if(n.containsPoint(t))return!0}return!1},buildMaximalEdgeRings:function(t){for(var e=new I,n=t.iterator();n.hasNext();){var i=n.next();if(i.isInResult()&&i.getLabel().isArea()&&null===i.getEdgeRing()){var r=new vn(i,this.geometryFactory);e.add(r),r.setInResult()}}return e},placePolygonHoles:function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next();i.isHole()&&i.setShell(t)}},getPolygons:function(){var t=this.computePolygons(this.shellList);return t},findEdgeRingContaining:function(t,e){for(var n=t.getLinearRing(),i=n.getEnvelopeInternal(),r=n.getCoordinateN(0),s=null,o=null,a=e.iterator();a.hasNext();){var u=a.next(),l=u.getLinearRing(),h=l.getEnvelopeInternal();null!==s&&(o=s.getLinearRing().getEnvelopeInternal());var c=!1;h.contains(i)&&he.isPointInRing(r,l.getCoordinates())&&(c=!0),c&&(null===s||o.contains(h))&&(s=u)}return s},findShell:function(t){for(var e=0,n=null,i=t.iterator();i.hasNext();){var r=i.next();r.isHole()||(n=r,e++)}return f.isTrue(1>=e,\"found two shells in MinimalEdgeRing list\"),n},add:function(){if(1===arguments.length){var t=arguments[0];this.add(t.getEdgeEnds(),t.getNodes())}else if(2===arguments.length){var e=arguments[0],n=arguments[1];Cn.linkResultDirectedEdges(n);var i=this.buildMaximalEdgeRings(e),r=new I,s=this.buildMinimalEdgeRings(i,this.shellList,r);this.sortShellsAndHoles(s,this.shellList,r),this.placeFreeHoles(this.shellList,r)}},interfaces_:function(){return[]},getClass:function(){return Sn}}),e(wn.prototype,{collectLines:function(t){for(var e=this.op.getGraph().getEdgeEnds().iterator();e.hasNext();){var n=e.next();this.collectLineEdge(n,t,this.lineEdgesList),this.collectBoundaryTouchEdge(n,t,this.lineEdgesList)}},labelIsolatedLine:function(t,e){var n=this.ptLocator.locate(t.getCoordinate(),this.op.getArgGeometry(e));t.getLabel().setLocation(e,n)},build:function(t){return this.findCoveredLineEdges(),this.collectLines(t),this.buildLines(t),this.resultLineList},collectLineEdge:function(t,e,n){var i=t.getLabel(),r=t.getEdge();t.isLineEdge()&&(t.isVisited()||!ii.isResultOfOp(i,e)||r.isCovered()||(n.add(r),t.setVisitedEdge(!0)))},findCoveredLineEdges:function(){for(var t=this.op.getGraph().getNodes().iterator();t.hasNext();){var e=t.next();e.getEdges().findCoveredLineEdges()}for(var n=this.op.getGraph().getEdgeEnds().iterator();n.hasNext();){var i=n.next(),r=i.getEdge();if(i.isLineEdge()&&!r.isCoveredSet()){var s=this.op.isCoveredByA(i.getCoordinate());r.setCovered(s)}}},labelIsolatedLines:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next(),i=n.getLabel();n.isIsolated()&&(i.isNull(0)?this.labelIsolatedLine(n,0):this.labelIsolatedLine(n,1))}},buildLines:function(t){for(var e=this.lineEdgesList.iterator();e.hasNext();){var n=e.next(),i=(n.getLabel(),this.geometryFactory.createLineString(n.getCoordinates()));this.resultLineList.add(i),n.setInResult(!0)}},collectBoundaryTouchEdge:function(t,e,n){var i=t.getLabel();return t.isLineEdge()?null:t.isVisited()?null:t.isInteriorAreaEdge()?null:t.getEdge().isInResult()?null:(f.isTrue(!(t.isInResult()||t.getSym().isInResult())||!t.getEdge().isInResult()),void(ii.isResultOfOp(i,e)&&e===ii.INTERSECTION&&(n.add(t.getEdge()),t.setVisitedEdge(!0))))},interfaces_:function(){return[]},getClass:function(){return wn}}),e(Ln.prototype,{filterCoveredNodeToPoint:function(t){var e=t.getCoordinate();if(!this.op.isCoveredByLA(e)){var n=this.geometryFactory.createPoint(e);this.resultPointList.add(n)}},extractNonCoveredResultNodes:function(t){for(var e=this.op.getGraph().getNodes().iterator();e.hasNext();){var n=e.next();if(!(n.isInResult()||n.isIncidentEdgeInResult()||0!==n.getEdges().getDegree()&&t!==ii.INTERSECTION)){var i=n.getLabel();ii.isResultOfOp(i,t)&&this.filterCoveredNodeToPoint(n)}}},build:function(t){return this.extractNonCoveredResultNodes(t),this.resultPointList},interfaces_:function(){return[]},getClass:function(){return Ln}}),e(Rn.prototype,{locate:function(t){},interfaces_:function(){return[]},getClass:function(){return Rn}}),e(Tn.prototype,{locate:function(t){return Tn.locate(t,this.geom)},interfaces_:function(){return[Rn]},getClass:function(){return Tn}}),Tn.isPointInRing=function(t,e){return e.getEnvelopeInternal().intersects(t)?he.isPointInRing(t,e.getCoordinates()):!1},Tn.containsPointInPolygon=function(t,e){if(e.isEmpty())return!1;var n=e.getExteriorRing();if(!Tn.isPointInRing(t,n))return!1;for(var i=0;is;s++)r.isLine(s)&&r.getLocation(s)===L.BOUNDARY&&(e[s]=!0);for(var n=this.iterator();n.hasNext();)for(var i=n.next(),r=i.getLabel(),s=0;2>s;s++)if(r.isAnyNull(s)){var o=L.NONE;if(e[s])o=L.EXTERIOR;else{var a=i.getCoordinate();o=this.getLocation(s,a,t)}r.setAllLocationsIfNull(s,o)}},getDegree:function(){return this.edgeMap.size()},insertEdgeEnd:function(t,e){this.edgeMap.put(t,e),this.edgeList=null},interfaces_:function(){return[]},getClass:function(){return Pn}}),h(bn,Pn),e(bn.prototype,{linkResultDirectedEdges:function(){this.getResultAreaEdges();for(var t=null,e=null,n=this.SCANNING_FOR_INCOMING,i=0;ie)return null;var n=t.get(0);if(1===e)return n;var i=t.get(e-1),r=n.getQuadrant(),s=i.getQuadrant();if(Je.isNorthern(r)&&Je.isNorthern(s))return n;if(!Je.isNorthern(r)&&!Je.isNorthern(s))return i;return 0!==n.getDy()?n:0!==i.getDy()?i:(f.shouldNeverReachHere(\"found two horizontal edges incident on node\"),null)},print:function(t){A.out.println(\"DirectedEdgeStar: \"+this.getCoordinate());for(var e=this.iterator();e.hasNext();){var n=e.next();t.print(\"out \"),n.print(t),t.println(),t.print(\"in \"),n.getSym().print(t),t.println()}},getResultAreaEdges:function(){if(null!==this.resultAreaEdgeList)return this.resultAreaEdgeList;this.resultAreaEdgeList=new I;for(var t=this.iterator();t.hasNext();){var e=t.next();(e.isInResult()||e.getSym().isInResult())&&this.resultAreaEdgeList.add(e)}return this.resultAreaEdgeList},updateLabelling:function(t){for(var e=this.iterator();e.hasNext();){var n=e.next(),i=n.getLabel();i.setAllLocationsIfNull(0,t.getLocation(0)),i.setAllLocationsIfNull(1,t.getLocation(1))}},linkAllDirectedEdges:function(){this.getEdges();for(var t=null,e=null,n=this.edgeList.size()-1;n>=0;n--){var i=this.edgeList.get(n),r=i.getSym();null===e&&(e=r),null!==t&&r.setNext(t),t=i}e.setNext(t)},computeDepths:function(){if(1===arguments.length){var t=arguments[0],e=this.findIndex(t),n=(t.getLabel(),t.getDepth(cn.LEFT)),i=t.getDepth(cn.RIGHT),r=this.computeDepths(e+1,this.edgeList.size(),n),s=this.computeDepths(0,e,r);if(s!==i)throw new sn(\"depth mismatch at \"+t.getCoordinate())}else if(3===arguments.length){for(var o=arguments[0],a=arguments[1],u=arguments[2],l=u,h=o;a>h;h++){var c=this.edgeList.get(h);c.getLabel();c.setEdgeDepths(cn.RIGHT,l),l=c.getDepth(cn.LEFT)}return l}},mergeSymLabels:function(){for(var t=this.iterator();t.hasNext();){var e=t.next(),n=e.getLabel();n.merge(e.getSym().getLabel())}},linkMinimalDirectedEdges:function(t){for(var e=null,n=null,i=this.SCANNING_FOR_INCOMING,r=this.resultAreaEdgeList.size()-1;r>=0;r--){var s=this.resultAreaEdgeList.get(r),o=s.getSym();switch(null===e&&s.getEdgeRing()===t&&(e=s),i){case this.SCANNING_FOR_INCOMING:if(o.getEdgeRing()!==t)continue;n=o,i=this.LINKING_TO_OUTGOING;break;case this.LINKING_TO_OUTGOING:if(s.getEdgeRing()!==t)continue;n.setNextMin(s),i=this.SCANNING_FOR_INCOMING}}i===this.LINKING_TO_OUTGOING&&(f.isTrue(null!==e,\"found null for first outgoing dirEdge\"),f.isTrue(e.getEdgeRing()===t,\"unable to link last incoming dirEdge\"),n.setNextMin(e))},getOutgoingDegree:function(){if(0===arguments.length){for(var t=0,e=this.iterator();e.hasNext();){var n=e.next();n.isInResult()&&t++}return t}if(1===arguments.length){for(var i=arguments[0],t=0,e=this.iterator();e.hasNext();){var n=e.next();n.getEdgeRing()===i&&t++}return t}},getLabel:function(){return this.label},findCoveredLineEdges:function(){for(var t=L.NONE,e=this.iterator();e.hasNext();){var n=e.next(),i=n.getSym();if(!n.isLineEdge()){if(n.isInResult()){t=L.INTERIOR;break}if(i.isInResult()){t=L.EXTERIOR;break}}}if(t===L.NONE)return null;for(var r=t,e=this.iterator();e.hasNext();){var n=e.next(),i=n.getSym();n.isLineEdge()?n.getEdge().setCovered(r===L.INTERIOR):(n.isInResult()&&(r=L.EXTERIOR),i.isInResult()&&(r=L.INTERIOR))}},computeLabelling:function(t){Pn.prototype.computeLabelling.call(this,t),this.label=new gn(L.NONE);for(var e=this.iterator();e.hasNext();)for(var n=e.next(),i=n.getEdge(),r=i.getLabel(),s=0;2>s;s++){var o=r.getLocation(s);o!==L.INTERIOR&&o!==L.BOUNDARY||this.label.setLocation(s,L.INTERIOR)}},interfaces_:function(){return[]},getClass:function(){return bn}}),h(On,Nn),e(On.prototype,{createNode:function(t){return new yn(t,new bn)},interfaces_:function(){return[]},getClass:function(){return On}}),e(_n.prototype,{computeIntersections:function(t,e){this.mce.computeIntersectsForChain(this.chainIndex,t.mce,t.chainIndex,e)},interfaces_:function(){return[]},getClass:function(){return _n}}),e(Mn.prototype,{isDelete:function(){return this.eventType===Mn.DELETE},setDeleteEventIndex:function(t){this.deleteEventIndex=t},getObject:function(){return this.obj},compareTo:function(t){var e=t;return this.xValuee.xValue?1:this.eventTypee.eventType?1:0},getInsertEvent:function(){return this.insertEvent},isInsert:function(){return this.eventType===Mn.INSERT},isSameLabel:function(t){return null===this.label?!1:this.label===t.label},getDeleteEventIndex:function(){return this.deleteEventIndex},interfaces_:function(){return[s]},getClass:function(){return Mn}}),Mn.INSERT=1,Mn.DELETE=2,e(Dn.prototype,{interfaces_:function(){return[]},getClass:function(){return Dn}}),e(An.prototype,{isTrivialIntersection:function(t,e,n,i){if(t===n&&1===this.li.getIntersectionNum()){if(An.isAdjacentSegments(e,i))return!0;if(t.isClosed()){var r=t.getNumPoints()-1;if(0===e&&i===r||0===i&&e===r)return!0}}return!1},getProperIntersectionPoint:function(){return this.properIntersectionPoint},setIsDoneIfProperInt:function(t){this.isDoneWhenProperInt=t},hasProperInteriorIntersection:function(){return this.hasProperInterior},isBoundaryPointInternal:function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next(),r=i.getCoordinate();if(t.isIntersection(r))return!0}return!1},hasProperIntersection:function(){return this.hasProper},hasIntersection:function(){return this._hasIntersection},isDone:function(){return this._isDone},isBoundaryPoint:function(t,e){return null===e?!1:this.isBoundaryPointInternal(t,e[0])?!0:!!this.isBoundaryPointInternal(t,e[1])},setBoundaryNodes:function(t,e){this.bdyNodes=new Array(2).fill(null),this.bdyNodes[0]=t,this.bdyNodes[1]=e},addIntersections:function(t,e,n,i){if(t===n&&e===i)return null;this.numTests++;var r=t.getCoordinates()[e],s=t.getCoordinates()[e+1],o=n.getCoordinates()[i],a=n.getCoordinates()[i+1];this.li.computeIntersection(r,s,o,a),this.li.hasIntersection()&&(this.recordIsolated&&(t.setIsolated(!1),n.setIsolated(!1)),this.numIntersections++,this.isTrivialIntersection(t,e,n,i)||(this._hasIntersection=!0,!this.includeProper&&this.li.isProper()||(t.addIntersections(this.li,e,0),n.addIntersections(this.li,i,1)),this.li.isProper()&&(this.properIntersectionPoint=this.li.getIntersection(0).copy(),this.hasProper=!0,this.isDoneWhenProperInt&&(this._isDone=!0),this.isBoundaryPoint(this.li,this.bdyNodes)||(this.hasProperInterior=!0))))},interfaces_:function(){return[]},getClass:function(){return An}}),An.isAdjacentSegments=function(t,e){return 1===Math.abs(t-e)},h(Fn,Dn),e(Fn.prototype,{prepareEvents:function(){ho.sort(this.events);for(var t=0;ts;s++){var o=this.events.get(s);if(o.isInsert()){var a=o.getObject();n.isSameLabel(o)||(r.computeIntersections(a,i),this.nOverlaps++)}}},addEdges:function(){if(1===arguments.length)for(var t=arguments[0],e=t.iterator();e.hasNext();){var n=e.next();this.addEdge(n,n)}else if(2===arguments.length)for(var i=arguments[0],r=arguments[1],e=i.iterator();e.hasNext();){var n=e.next();this.addEdge(n,r)}},interfaces_:function(){return[]},getClass:function(){return Fn}}),e(Gn.prototype,{getMin:function(){return this.min},intersects:function(t,e){return!(this.min>e||this.maxr?-1:r>s?1:0},interfaces_:function(){return[a]},getClass:function(){return qn}}),Gn.NodeComparator=qn,h(Bn,Gn),e(Bn.prototype,{query:function(t,e,n){return this.intersects(t,e)?void n.visitItem(this.item):null},interfaces_:function(){return[]},getClass:function(){return Bn}}),h(zn,Gn),e(zn.prototype,{buildExtent:function(t,e){this.min=Math.min(t.min,e.min),this.max=Math.max(t.max,e.max)},query:function(t,e,n){return this.intersects(t,e)?(null!==this.node1&&this.node1.query(t,e,n),void(null!==this.node2&&this.node2.query(t,e,n))):null},interfaces_:function(){return[]},getClass:function(){return zn}}),e(Vn.prototype,{buildTree:function(){ho.sort(this.leaves,new IntervalRTreeNode.NodeComparator);for(var t=this.leaves,e=null,n=new I;;){if(this.buildLevel(t,n),1===n.size())return n.get(0);e=t,t=n,n=e}},insert:function(t,e,n){if(null!==this.root)throw new IllegalStateException(\"Index cannot be added to once it has been queried\");this.leaves.add(new Bn(t,e,n))},query:function(t,e,n){this.init(),this.root.query(t,e,n)},buildRoot:function(){return null!==this.root?null:void(this.root=this.buildTree())},printNode:function(t){A.out.println(se.toLineString(new g(t.min,this.level),new g(t.max,this.level)))},init:function(){return null!==this.root?null:void this.buildRoot()},buildLevel:function(t,e){this.level++,e.clear();for(var n=0;nt?1:this.diste?1:0},interfaces_:function(){return[s]},getClass:function(){return Wn}}),e(jn.prototype,{print:function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){var n=e.next();n.print(t)}},iterator:function(){return this.nodeMap.values().iterator()},addSplitEdges:function(t){this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next(),r=this.createSplitEdge(n,i);t.add(r),n=i}},addEndpoints:function(){var t=this.edge.pts.length-1;this.add(this.edge.pts[0],0,0),this.add(this.edge.pts[t],t,0)},createSplitEdge:function(t,e){var n=e.segmentIndex-t.segmentIndex+2,i=this.edge.pts[e.segmentIndex],r=e.dist>0||!e.coord.equals2D(i);r||n--;var s=new Array(n).fill(null),o=0;s[o++]=new g(t.coord);for(var a=t.segmentIndex+1;a<=e.segmentIndex;a++)s[o++]=this.edge.pts[a];return r&&(s[o]=e.coord),new Jn(s,new gn(this.edge.label))},add:function(t,e,n){var i=new Wn(t,e,n),r=this.nodeMap.get(i);return null!==r?r:(this.nodeMap.put(i,i),i)},isIntersection:function(t){for(var e=this.iterator();e.hasNext();){var n=e.next();if(n.coord.equals(t))return!0}return!1},interfaces_:function(){return[]},getClass:function(){return jn}}),e(Kn.prototype,{getChainStartIndices:function(t){var e=0,n=new I;n.add(new b(e));do{var i=this.findChainEnd(t,e);n.add(new b(i)),e=i}while(en?e:n},getMinX:function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return n>e?e:n},computeIntersectsForChain:function(){if(4===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this.computeIntersectsForChain(this.startIndex[t],this.startIndex[t+1],e,e.startIndex[n],e.startIndex[n+1],i)}else if(6===arguments.length){var r=arguments[0],s=arguments[1],o=arguments[2],a=arguments[3],u=arguments[4],l=arguments[5],h=this.pts[r],c=this.pts[s],f=o.pts[a],g=o.pts[u];if(s-r===1&&u-a===1)return l.addIntersections(this.e,r,o.e,a),null;if(this.env1.init(h,c),this.env2.init(f,g),!this.env1.intersects(this.env2))return null;var d=Math.trunc((r+s)/2),p=Math.trunc((a+u)/2);d>r&&(p>a&&this.computeIntersectsForChain(r,d,o,a,p,l),u>p&&this.computeIntersectsForChain(r,d,o,p,u,l)),s>d&&(p>a&&this.computeIntersectsForChain(d,s,o,a,p,l),u>p&&this.computeIntersectsForChain(d,s,o,p,u,l))}},getStartIndexes:function(){return this.startIndex},computeIntersects:function(t,e){for(var n=0;nt;t++)for(var e=0;3>e;e++)if(this.depth[t][e]!==Qn.NULL_VALUE)return!1;return!0}if(1===arguments.length){var n=arguments[0];return this.depth[n][1]===Qn.NULL_VALUE}if(2===arguments.length){var i=arguments[0],r=arguments[1];return this.depth[i][r]===Qn.NULL_VALUE}},normalize:function(){for(var t=0;2>t;t++)if(!this.isNull(t)){var e=this.depth[t][1];this.depth[t][2]e&&(e=0);for(var n=1;3>n;n++){var i=0;this.depth[t][n]>e&&(i=1),this.depth[t][n]=i}}},getDelta:function(t){return this.depth[t][cn.RIGHT]-this.depth[t][cn.LEFT]},getLocation:function(t,e){return this.depth[t][e]<=0?L.EXTERIOR:L.INTERIOR},toString:function(){return\"A: \"+this.depth[0][1]+\",\"+this.depth[0][2]+\" B: \"+this.depth[1][1]+\",\"+this.depth[1][2]},add:function(){if(1===arguments.length)for(var t=arguments[0],e=0;2>e;e++)for(var n=1;3>n;n++){var i=t.getLocation(e,n);i!==L.EXTERIOR&&i!==L.INTERIOR||(this.isNull(e,n)?this.depth[e][n]=Qn.depthAtLocation(i):this.depth[e][n]+=Qn.depthAtLocation(i))}else if(3===arguments.length){var r=arguments[0],s=arguments[1],o=arguments[2];o===L.INTERIOR&&this.depth[r][s]++}},interfaces_:function(){return[]},getClass:function(){return Qn}}),Qn.depthAtLocation=function(t){return t===L.EXTERIOR?0:t===L.INTERIOR?1:Qn.NULL_VALUE},Qn.NULL_VALUE=-1,h(Jn,mn),e(Jn.prototype,{getDepth:function(){return this.depth},getCollapsedEdge:function(){var t=new Array(2).fill(null);t[0]=this.pts[0],t[1]=this.pts[1];var e=new Jn(t,gn.toLineLabel(this.label));return e},isIsolated:function(){return this._isIsolated},getCoordinates:function(){return this.pts},setIsolated:function(t){this._isIsolated=t},setName:function(t){this.name=t},equals:function(t){if(!(t instanceof Jn))return!1;var e=t;if(this.pts.length!==e.pts.length)return!1;for(var n=!0,i=!0,r=this.pts.length,s=0;s0?this.pts[0]:null;if(1===arguments.length){var t=arguments[0];return this.pts[t]}},print:function(t){t.print(\"edge \"+this.name+\": \"),t.print(\"LINESTRING (\");for(var e=0;e0&&t.print(\",\"),t.print(this.pts[e].x+\" \"+this.pts[e].y);t.print(\") \"+this.label+\" \"+this.depthDelta)},computeIM:function(t){Jn.updateIM(this.label,t)},isCollapsed:function(){return this.label.isArea()?3!==this.pts.length?!1:!!this.pts[0].equals(this.pts[2]):!1},isClosed:function(){return this.pts[0].equals(this.pts[this.pts.length-1])},getMaximumSegmentIndex:function(){return this.pts.length-1},getDepthDelta:function(){return this.depthDelta},getNumPoints:function(){return this.pts.length},printReverse:function(t){t.print(\"edge \"+this.name+\": \");for(var e=this.pts.length-1;e>=0;e--)t.print(this.pts[e]+\" \");t.println(\"\")},getMonotoneChainEdge:function(){return null===this.mce&&(this.mce=new Zn(this)),this.mce},getEnvelope:function(){if(null===this.env){this.env=new C;for(var t=0;t0&&t.append(\",\"),t.append(this.pts[e].x+\" \"+this.pts[e].y);return t.append(\") \"+this.label+\" \"+this.depthDelta),t.toString()},isPointwiseEqual:function(t){if(this.pts.length!==t.pts.length)return!1;for(var e=0;e=2,\"found LineString with single point\"),this.insertBoundaryPoint(this.argIndex,e[0]),this.insertBoundaryPoint(this.argIndex,e[e.length-1])},getInvalidPoint:function(){return this.invalidPoint},getBoundaryPoints:function(){for(var t=this.getBoundaryNodes(),e=new Array(t.size()).fill(null),n=0,i=t.iterator();i.hasNext();){var r=i.next();e[n++]=r.getCoordinate().copy()}return e},getBoundaryNodes:function(){return null===this.boundaryNodes&&(this.boundaryNodes=this.nodes.getBoundaryNodes(this.argIndex)),this.boundaryNodes},addSelfIntersectionNode:function(t,e,n){return this.isBoundaryNode(t,e)?null:void(n===L.BOUNDARY&&this.useBoundaryDeterminationRule?this.insertBoundaryPoint(t,e):this.insertPoint(t,e,n))},addPolygonRing:function(t,e,n){if(t.isEmpty())return null;var i=H.removeRepeatedPoints(t.getCoordinates());if(i.length<4)return this._hasTooFewPoints=!0,this.invalidPoint=i[0],null;var r=e,s=n;he.isCCW(i)&&(r=n,s=e);var o=new Jn(i,new gn(this.argIndex,L.BOUNDARY,r,s));this.lineEdgeMap.put(t,o),this.insertEdge(o),this.insertPoint(this.argIndex,i[0],L.BOUNDARY)},insertPoint:function(t,e,n){var i=this.nodes.addNode(e),r=i.getLabel();null===r?i.label=new gn(t,n):r.setLocation(t,n)},createEdgeSetIntersector:function(){return new Fn},addSelfIntersectionNodes:function(t){for(var e=this.edges.iterator();e.hasNext();)for(var n=e.next(),i=n.getLabel().getLocation(t),r=n.eiList.iterator();r.hasNext();){var s=r.next();this.addSelfIntersectionNode(t,s.coord,i)}},add:function(){if(1!==arguments.length)return Cn.prototype.add.apply(this,arguments);var t=arguments[0];if(t.isEmpty())return null;if(t instanceof Ot&&(this.useBoundaryDeterminationRule=!1),t instanceof Tt)this.addPolygon(t);else if(t instanceof St)this.addLineString(t);else if(t instanceof Lt)this.addPoint(t);else if(t instanceof Pt)this.addCollection(t);else if(t instanceof gt)this.addCollection(t);else if(t instanceof Ot)this.addCollection(t);else{if(!(t instanceof ft))throw new UnsupportedOperationException(t.getClass().getName());this.addCollection(t)}},addCollection:function(t){for(var e=0;e50?(null===this.areaPtLocator&&(this.areaPtLocator=new Un(this.parentGeom)),this.areaPtLocator.locate(t)):this.ptLocator.locate(t,this.parentGeom)},findEdge:function(){if(1===arguments.length){var t=arguments[0];return this.lineEdgeMap.get(t)}return Cn.prototype.findEdge.apply(this,arguments)},interfaces_:function(){return[]},getClass:function(){return $n}}),$n.determineBoundary=function(t,e){return t.isInBoundary(e)?L.BOUNDARY:L.INTERIOR},e(ti.prototype,{getArgGeometry:function(t){return this.arg[t].getGeometry()},setComputationPrecision:function(t){this.resultPrecisionModel=t,this.li.setPrecisionModel(this.resultPrecisionModel)},interfaces_:function(){return[]},getClass:function(){return ti}}),e(ei.prototype,{compareTo:function(t){var e=t,n=ei.compareOriented(this.pts,this._orientation,e.pts,e._orientation);return n},interfaces_:function(){return[s]},getClass:function(){return ei}}),ei.orientation=function(t){return 1===H.increasingDirection(t)},ei.compareOriented=function(t,e,n,i){for(var r=e?1:-1,s=i?1:-1,o=e?t.length:-1,a=i?n.length:-1,u=e?0:t.length-1,l=i?0:n.length-1;;){var h=t[u].compareTo(n[l]);if(0!==h)return h;u+=r,l+=s;var c=u===o,f=l===a;if(c&&!f)return-1;if(!c&&f)return 1;if(c&&f)return 0}},e(ni.prototype,{print:function(t){t.print(\"MULTILINESTRING ( \");for(var e=0;e0&&t.print(\",\"),t.print(\"(\");for(var i=n.getCoordinates(),r=0;r0&&t.print(\",\"),t.print(i[r].x+\" \"+i[r].y);t.println(\")\")}t.print(\") \")},addAll:function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next())},findEdgeIndex:function(t){for(var e=0;er;r++)n.isNull(r)||!n.isArea()||i.isNull(r)||(0===i.getDelta(r)?n.toLine(r):(f.isTrue(!i.isNull(r,cn.LEFT),\"depth of LEFT side has not been initialized\"),n.setLocation(r,cn.LEFT,i.getLocation(r,cn.LEFT)),f.isTrue(!i.isNull(r,cn.RIGHT),\"depth of RIGHT side has not been initialized\"),n.setLocation(r,cn.RIGHT,i.getLocation(r,cn.RIGHT))))}}},computeLabelling:function(){for(var t=this.graph.getNodes().iterator();t.hasNext();){var e=t.next();e.getEdges().computeLabelling(this.arg)}this.mergeSymLabels(),this.updateNodeLabelling()},labelIncompleteNodes:function(){for(var t=0,e=this.graph.getNodes().iterator();e.hasNext();){var n=e.next(),i=n.getLabel();n.isIsolated()&&(t++,i.isNull(0)?this.labelIncompleteNode(n,0):this.labelIncompleteNode(n,1)),n.getEdges().updateLabelling(i)}},isCoveredByA:function(t){return!!this.isCovered(t,this.resultPolyList)},interfaces_:function(){return[]},getClass:function(){return ii}}),ii.overlayOp=function(t,e,n){var i=new ii(t,e),r=i.getResultGeometry(n);return r},ii.intersection=function(t,e){if(t.isEmpty()||e.isEmpty())return ii.createEmptyResult(ii.INTERSECTION,t,e,t.getFactory());if(t.isGeometryCollection()){var n=e;return hn.map(t,{interfaces_:function(){return[MapOp]},map:function(t){return t.intersection(n)}})}return t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),si.overlayOp(t,e,ii.INTERSECTION)},ii.symDifference=function(t,e){if(t.isEmpty()||e.isEmpty()){if(t.isEmpty()&&e.isEmpty())return ii.createEmptyResult(ii.SYMDIFFERENCE,t,e,t.getFactory());if(t.isEmpty())return e.copy();if(e.isEmpty())return t.copy()}return t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),si.overlayOp(t,e,ii.SYMDIFFERENCE)},ii.resultDimension=function(t,e,n){var i=e.getDimension(),r=n.getDimension(),s=-1;switch(t){case ii.INTERSECTION:s=Math.min(i,r);break;case ii.UNION:s=Math.max(i,r);break;case ii.DIFFERENCE:s=i;break;case ii.SYMDIFFERENCE:s=Math.max(i,r)}return s},ii.createEmptyResult=function(t,e,n,i){var r=null;switch(ii.resultDimension(t,e,n)){case-1:r=i.createGeometryCollection(new Array(0).fill(null));break;case 0:r=i.createPoint();break;case 1:r=i.createLineString();break;case 2:r=i.createPolygon()}return r},ii.difference=function(t,e){return t.isEmpty()?ii.createEmptyResult(ii.DIFFERENCE,t,e,t.getFactory()):e.isEmpty()?t.copy():(t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),si.overlayOp(t,e,ii.DIFFERENCE))},ii.isResultOfOp=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=t.getLocation(0),i=t.getLocation(1);return ii.isResultOfOp(n,i,e)}if(3===arguments.length){var r=arguments[0],s=arguments[1],o=arguments[2];switch(r===L.BOUNDARY&&(r=L.INTERIOR),s===L.BOUNDARY&&(s=L.INTERIOR),o){case ii.INTERSECTION:return r===L.INTERIOR&&s===L.INTERIOR;case ii.UNION:return r===L.INTERIOR||s===L.INTERIOR;case ii.DIFFERENCE:return r===L.INTERIOR&&s!==L.INTERIOR;case ii.SYMDIFFERENCE:return r===L.INTERIOR&&s!==L.INTERIOR||r!==L.INTERIOR&&s===L.INTERIOR}return!1}},ii.INTERSECTION=1,ii.UNION=2,ii.DIFFERENCE=3,ii.SYMDIFFERENCE=4,e(ri.prototype,{selfSnap:function(t){var e=new Ie(t),n=e.snapTo(t,this.snapTolerance);return n},removeCommonBits:function(t){this.cbr=new Se,this.cbr.add(t[0]),this.cbr.add(t[1]);var e=new Array(2).fill(null);return e[0]=this.cbr.removeCommonBits(t[0].copy()),e[1]=this.cbr.removeCommonBits(t[1].copy()),e},prepareResult:function(t){return this.cbr.addCommonBits(t),t},getResultGeometry:function(t){var e=this.snap(this.geom),n=ii.overlayOp(e[0],e[1],t);return this.prepareResult(n)},checkValid:function(t){t.isValid()||A.out.println(\"Snapped geometry is invalid\")},computeSnapTolerance:function(){this.snapTolerance=Ie.computeOverlaySnapTolerance(this.geom[0],this.geom[1])},snap:function(t){var e=this.removeCommonBits(t),n=Ie.snap(e[0],e[1],this.snapTolerance);return n},interfaces_:function(){return[]},getClass:function(){return ri}}),ri.overlayOp=function(t,e,n){var i=new ri(t,e);return i.getResultGeometry(n)},ri.union=function(t,e){return ri.overlayOp(t,e,ii.UNION)},ri.intersection=function(t,e){return ri.overlayOp(t,e,ii.INTERSECTION)},ri.symDifference=function(t,e){return ri.overlayOp(t,e,ii.SYMDIFFERENCE)},ri.difference=function(t,e){return ri.overlayOp(t,e,ii.DIFFERENCE)},e(si.prototype,{getResultGeometry:function(t){var e=null,n=!1,i=null;try{e=ii.overlayOp(this.geom[0],this.geom[1],t);var r=!0;r&&(n=!0)}catch(t){if(!(t instanceof l))throw t;i=t}finally{}if(!n)try{e=ri.overlayOp(this.geom[0],this.geom[1],t)}catch(t){throw t instanceof l?i:t}finally{}return e},interfaces_:function(){return[]},getClass:function(){return si}}),si.overlayOp=function(t,e,n){var i=new si(t,e);return i.getResultGeometry(n)},si.union=function(t,e){return si.overlayOp(t,e,ii.UNION)},si.intersection=function(t,e){return si.overlayOp(t,e,ii.INTERSECTION)},si.symDifference=function(t,e){return si.overlayOp(t,e,ii.SYMDIFFERENCE)},si.difference=function(t,e){return si.overlayOp(t,e,ii.DIFFERENCE)},e(oi.prototype,{addPolygon:function(t){if(t.isEmpty())return null;var e=null,n=0,i=this.horizontalBisector(t);if(0===i.getLength())n=0,e=i.getCoordinate();else{var r=si.overlayOp(i,t,ii.INTERSECTION),s=this.widestGeometry(r);n=s.getEnvelopeInternal().getWidth(),e=oi.centre(s.getEnvelopeInternal())}(null===this.interiorPoint||n>this.maxWidth)&&(this.interiorPoint=e,this.maxWidth=n)},getInteriorPoint:function(){return this.interiorPoint},widestGeometry:function t(){if(arguments[0]instanceof ft){var e=arguments[0];if(e.isEmpty())return e;for(var t=e.getGeometryN(0),n=1;nt.getEnvelopeInternal().getWidth()&&(t=e.getGeometryN(n));return t}if(arguments[0]instanceof B){var i=arguments[0];return i instanceof ft?this.widestGeometry(i):i}},horizontalBisector:function(t){var e=t.getEnvelopeInternal(),n=ai.getBisectorY(t);return this.factory.createLineString([new g(e.getMinX(),n),new g(e.getMaxX(),n)])},add:function(t){if(t instanceof Tt)this.addPolygon(t);else if(t instanceof ft)for(var e=t,n=0;nthis.loY&&(this.loY=t):t>this.centreY&&tMath.PI;)t-=hi.PI_TIMES_2;for(;t<=-Math.PI;)t+=hi.PI_TIMES_2;return t},hi.angle=function(){if(1===arguments.length){var t=arguments[0];return Math.atan2(t.y,t.x)}if(2===arguments.length){var e=arguments[0],n=arguments[1],i=n.x-e.x,r=n.y-e.y;return Math.atan2(r,i)}},hi.isAcute=function(t,e,n){var i=t.x-e.x,r=t.y-e.y,s=n.x-e.x,o=n.y-e.y,a=i*s+r*o;return a>0},hi.isObtuse=function(t,e,n){var i=t.x-e.x,r=t.y-e.y,s=n.x-e.x,o=n.y-e.y,a=i*s+r*o;return 0>a},hi.interiorAngle=function(t,e,n){var i=hi.angle(e,t),r=hi.angle(e,n);return Math.abs(r-i)},hi.normalizePositive=function(t){if(0>t){for(;0>t;)t+=hi.PI_TIMES_2;t>=hi.PI_TIMES_2&&(t=0)}else{for(;t>=hi.PI_TIMES_2;)t-=hi.PI_TIMES_2;0>t&&(t=0)}return t},hi.angleBetween=function(t,e,n){var i=hi.angle(e,t),r=hi.angle(e,n);return hi.diff(i,r)},hi.diff=function(t,e){var n=null;return n=e>t?e-t:t-e,n>Math.PI&&(n=2*Math.PI-n),n},hi.toRadians=function(t){return t*Math.PI/180},hi.getTurn=function(t,e){var n=Math.sin(e-t);return n>0?hi.COUNTERCLOCKWISE:0>n?hi.CLOCKWISE:hi.NONE},hi.angleBetweenOriented=function(t,e,n){var i=hi.angle(e,t),r=hi.angle(e,n),s=r-i;return s<=-Math.PI?s+hi.PI_TIMES_2:s>Math.PI?s-hi.PI_TIMES_2:s},hi.PI_TIMES_2=2*Math.PI,hi.PI_OVER_2=Math.PI/2,hi.PI_OVER_4=Math.PI/4,hi.COUNTERCLOCKWISE=he.COUNTERCLOCKWISE,hi.CLOCKWISE=he.CLOCKWISE,hi.NONE=he.COLLINEAR,e(ci.prototype,{area:function(){return ci.area(this.p0,this.p1,this.p2)},signedArea:function(){return ci.signedArea(this.p0,this.p1,this.p2)},interpolateZ:function(t){if(null===t)throw new i(\"Supplied point is null.\");return ci.interpolateZ(t,this.p0,this.p1,this.p2)},longestSideLength:function(){return ci.longestSideLength(this.p0,this.p1,this.p2)},isAcute:function(){return ci.isAcute(this.p0,this.p1,this.p2)},circumcentre:function(){return ci.circumcentre(this.p0,this.p1,this.p2)},area3D:function(){return ci.area3D(this.p0,this.p1,this.p2)},centroid:function(){return ci.centroid(this.p0,this.p1,this.p2)},inCentre:function(){return ci.inCentre(this.p0,this.p1,this.p2)},interfaces_:function(){return[]},getClass:function(){return ci}}),ci.area=function(t,e,n){return Math.abs(((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2)},ci.signedArea=function(t,e,n){return((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2},ci.det=function(t,e,n,i){return t*i-e*n},ci.interpolateZ=function(t,e,n,i){var r=e.x,s=e.y,o=n.x-r,a=i.x-r,u=n.y-s,l=i.y-s,h=o*l-a*u,c=t.x-r,f=t.y-s,g=(l*c-a*f)/h,d=(-u*c+o*f)/h,p=e.z+g*(n.z-e.z)+d*(i.z-e.z);return p},ci.longestSideLength=function(t,e,n){var i=t.distance(e),r=e.distance(n),s=n.distance(t),o=i;return r>o&&(o=r),s>o&&(o=s),o},ci.isAcute=function(t,e,n){return hi.isAcute(t,e,n)&&hi.isAcute(e,n,t)?!!hi.isAcute(n,t,e):!1},ci.circumcentre=function(t,e,n){var i=n.x,r=n.y,s=t.x-i,o=t.y-r,a=e.x-i,u=e.y-r,l=2*ci.det(s,o,a,u),h=ci.det(o,s*s+o*o,u,a*a+u*u),c=ci.det(s,s*s+o*o,a,a*a+u*u),f=i-h/l,d=r+c/l;return new g(f,d)},ci.perpendicularBisector=function(t,e){var n=e.x-t.x,i=e.y-t.y,r=new F(t.x+n/2,t.y+i/2,1),s=new F(t.x-i+n/2,t.y+n+i/2,1);return new F(r,s)},ci.angleBisector=function(t,e,n){var i=e.distance(t),r=e.distance(n),s=i/(i+r),o=n.x-t.x,a=n.y-t.y,u=new g(t.x+s*o,t.y+s*a);return u},ci.area3D=function(t,e,n){var i=e.x-t.x,r=e.y-t.y,s=e.z-t.z,o=n.x-t.x,a=n.y-t.y,u=n.z-t.z,l=r*u-s*a,h=s*o-i*u,c=i*a-r*o,f=l*l+h*h+c*c,g=Math.sqrt(f)/2;return g},ci.centroid=function(t,e,n){var i=(t.x+e.x+n.x)/3,r=(t.y+e.y+n.y)/3;return new g(i,r)},ci.inCentre=function(t,e,n){var i=e.distance(n),r=t.distance(n),s=t.distance(e),o=i+r+s,a=(i*t.x+r*e.x+s*n.x)/o,u=(i*t.y+r*e.y+s*n.y)/o;return new g(a,u)},e(fi.prototype,{getRadius:function(){return this.compute(),this.radius},getDiameter:function(){switch(this.compute(),this.extremalPts.length){case 0:return this.input.getFactory().createLineString();case 1:return this.input.getFactory().createPoint(this.centre)}var t=this.extremalPts[0],e=this.extremalPts[1];return this.input.getFactory().createLineString([t,e])},getExtremalPoints:function(){return this.compute(),this.extremalPts},computeCirclePoints:function(){if(this.input.isEmpty())return this.extremalPts=new Array(0).fill(null),null;if(1===this.input.getNumPoints()){var t=this.input.getCoordinates();return this.extremalPts=[new g(t[0])],null}var e=this.input.convexHull(),n=e.getCoordinates(),t=n;if(n[0].equals2D(n[n.length-1])&&(t=new Array(n.length-1).fill(null),H.copyDeep(n,0,t,0,n.length-1)),t.length<=2)return this.extremalPts=H.copyDeep(t),null;for(var i=fi.lowestPoint(t),r=fi.pointWitMinAngleWithX(t,i),s=0;su&&(u=-u);var l=Math.sqrt(a*a+u*u),h=u/l;n>h&&(n=h,i=o)}}return i},fi.lowestPoint=function(t){for(var e=t[0],n=1;nu&&(i=u,s=a)}}return s},e(gi.prototype,{getWidthCoordinate:function(){return this.computeMinimumDiameter(),this.minWidthPt},getSupportingSegment:function(){return this.computeMinimumDiameter(),this.inputGeom.getFactory().createLineString([this.minBaseSeg.p0,this.minBaseSeg.p1])},getDiameter:function(){if(this.computeMinimumDiameter(),null===this.minWidthPt)return this.inputGeom.getFactory().createLineString(null);var t=this.minBaseSeg.project(this.minWidthPt);return this.inputGeom.getFactory().createLineString([t,this.minWidthPt])},computeWidthConvex:function(t){t instanceof Tt?this.convexHullPts=t.getExteriorRing().getCoordinates():this.convexHullPts=t.getCoordinates(),0===this.convexHullPts.length?(this.minWidth=0,this.minWidthPt=null,this.minBaseSeg=null):1===this.convexHullPts.length?(this.minWidth=0,this.minWidthPt=this.convexHullPts[0],this.minBaseSeg.p0=this.convexHullPts[0],this.minBaseSeg.p1=this.convexHullPts[0]):2===this.convexHullPts.length||3===this.convexHullPts.length?(this.minWidth=0,this.minWidthPt=this.convexHullPts[0],this.minBaseSeg.p0=this.convexHullPts[0],this.minBaseSeg.p1=this.convexHullPts[1]):this.computeConvexRingMinDiameter(this.convexHullPts)},computeConvexRingMinDiameter:function(t){this.minWidth=r.MAX_VALUE;for(var e=1,n=new ce,i=0;i=i;)i=r,s=o,o=gi.nextIndex(t,s),r=e.distancePerpendicular(t[o]);return ii&&(i=u),n>u&&(n=u);var l=gi.computeC(-e,t,this.convexHullPts[a]);l>o&&(o=l),s>l&&(s=l)}var h=gi.computeSegmentForLine(-t,-e,o),c=gi.computeSegmentForLine(-t,-e,s),f=gi.computeSegmentForLine(-e,t,i),g=gi.computeSegmentForLine(-e,t,n),d=f.lineIntersection(h),p=g.lineIntersection(h),v=g.lineIntersection(c),m=f.lineIntersection(c),y=this.inputGeom.getFactory().createLinearRing([d,p,v,m,d]);return this.inputGeom.getFactory().createPolygon(y,null)},interfaces_:function(){return[]},getClass:function(){return gi}}),gi.nextIndex=function(t,e){return e++,e>=t.length&&(e=0),e},gi.computeC=function(t,e,n){return t*n.y-e*n.x},gi.getMinimumDiameter=function(t){return new gi(t).getDiameter()},gi.getMinimumRectangle=function(t){return new gi(t).getMinimumRectangle()},gi.computeSegmentForLine=function(t,e,n){var i=null,r=null;return Math.abs(e)>Math.abs(t)?(i=new g(0,n/e),r=new g(1,n/e-t/e)):(i=new g(n/t,0),r=new g(n/t-e/t,1)),new ce(i,r)};var co=Object.freeze({Centroid:ge,CGAlgorithms:he,ConvexHull:me,InteriorPointArea:oi,InteriorPointLine:ui,InteriorPointPoint:li,RobustLineIntersector:ae,MinimumBoundingCircle:fi,MinimumDiameter:gi});e(di.prototype,{getResultGeometry:function(){return new pi(this.distanceTolerance).transform(this.inputGeom)},setDistanceTolerance:function(t){if(0>=t)throw new i(\"Tolerance must be positive\");this.distanceTolerance=t},interfaces_:function(){return[]},getClass:function(){return di}}),di.densifyPoints=function(t,e,n){for(var i=new ce,r=new N,s=0;s1)for(var u=o/a,l=1;a>l;l++){var h=l*u/o,c=i.pointAlong(h);n.makePrecise(c),r.add(c,!1)}}return r.add(t[t.length-1],!1),r.toCoordinateArray()},di.densify=function(t,e){var n=new di(t);return n.setDistanceTolerance(e),n.getResultGeometry()},h(pi,xe),e(pi.prototype,{transformMultiPolygon:function(t,e){var n=xe.prototype.transformMultiPolygon.call(this,t,e);return this.createValidArea(n)},transformPolygon:function(t,e){var n=xe.prototype.transformPolygon.call(this,t,e);return e instanceof Ot?n:this.createValidArea(n)},transformCoordinates:function(t,e){var n=t.toCoordinateArray(),i=di.densifyPoints(n,this.distanceTolerance,e.getPrecisionModel());return e instanceof St&&1===i.length&&(i=new Array(0).fill(null)),this.factory.getCoordinateSequenceFactory().create(i)},createValidArea:function(t){return t.buffer(0)},interfaces_:function(){return[]},getClass:function(){return pi}}),di.DensifyTransformer=pi;var fo=Object.freeze({Densifier:di});e(vi.prototype,{find:function(t){var e=this;do{if(null===e)return null;if(e.dest().equals2D(t))return e;e=e.oNext()}while(e!==this);return null},dest:function(){return this._sym._orig},oNext:function(){return this._sym._next},insert:function(t){if(this.oNext()===this)return this.insertAfter(t),null;var e=this.compareTo(t),n=this;do{var i=n.oNext(),r=i.compareTo(t);if(r!==e||i===this)return n.insertAfter(t),null;n=i}while(n!==this);f.shouldNeverReachHere()},insertAfter:function(t){f.equals(this._orig,t.orig());var e=this.oNext();this._sym.setNext(t),t.sym().setNext(e)},degree:function t(){var t=0,e=this;do t++,e=e.oNext();while(e!==this);return t},equals:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this._orig.equals2D(t)&&this._sym._orig.equals(e)}},deltaY:function(){return this._sym._orig.y-this._orig.y},sym:function(){return this._sym},prev:function(){return this._sym.next()._sym},compareAngularDirection:function(t){var e=this.deltaX(),n=this.deltaY(),i=t.deltaX(),r=t.deltaY();if(e===i&&n===r)return 0;var s=Je.quadrant(e,n),o=Je.quadrant(i,r);return s>o?1:o>s?-1:he.computeOrientation(t._orig,t.dest(),this.dest())},prevNode:function(){for(var t=this;2===t.degree();)if(t=t.prev(),t===this)return null;return t},compareTo:function(t){var e=t,n=this.compareAngularDirection(e);return n},next:function(){return this._next},setSym:function(t){this._sym=t},orig:function(){return this._orig},toString:function(){return\"HE(\"+this._orig.x+\" \"+this._orig.y+\", \"+this._sym._orig.x+\" \"+this._sym._orig.y+\")\"},setNext:function(t){this._next=t},init:function(t){this.setSym(t),t.setSym(this),this.setNext(t),t.setNext(this)},deltaX:function(){return this._sym._orig.x-this._orig.x},interfaces_:function(){return[]},getClass:function(){return vi}}),vi.init=function(t,e){if(null!==t._sym||null!==e._sym||null!==t._next||null!==e._next)throw new IllegalStateException(\"Edges are already initialized\");return t.init(e),t},vi.create=function(t,e){var n=new vi(t),i=new vi(e);return n.init(i),n},h(mi,vi),e(mi.prototype,{mark:function(){this._isMarked=!0},setMark:function(t){this._isMarked=t},isMarked:function(){return this._isMarked},interfaces_:function(){return[]},getClass:function(){return mi}}),mi.setMarkBoth=function(t,e){t.setMark(e),t.sym().setMark(e)},mi.isMarked=function(t){return t.isMarked()},mi.setMark=function(t,e){t.setMark(e)},mi.markBoth=function(t){t.mark(),t.sym().mark()},mi.mark=function(t){t.mark()},e(yi.prototype,{insert:function(t,e,n){var i=this.create(t,e);null!==n?n.insert(i):this.vertexMap.put(t,i);var r=this.vertexMap.get(e);return null!==r?r.insert(i.sym()):this.vertexMap.put(e,i.sym()),i},create:function(t,e){var n=this.createEdge(t),i=this.createEdge(e);return vi.init(n,i),n},createEdge:function(t){return new vi(t)},addEdge:function(t,e){if(!yi.isValidEdge(t,e))return null;var n=this.vertexMap.get(t),i=null;if(null!==n&&(i=n.find(e)),null!==i)return i;var r=this.insert(t,e,n);return r},getVertexEdges:function(){return this.vertexMap.values()},findEdge:function(t,e){var n=this.vertexMap.get(t);return null===n?null:n.find(e)},interfaces_:function(){return[]},getClass:function(){return yi}}),yi.isValidEdge=function(t,e){var n=e.compareTo(t);return 0!==n},h(xi,mi),e(xi.prototype,{setStart:function(){this._isStart=!0},isStart:function(){return this._isStart},interfaces_:function(){return[]},getClass:function(){return xi}}),h(Ei,yi),e(Ei.prototype,{createEdge:function(t){return new xi(t)},interfaces_:function(){return[]},getClass:function(){return Ei}}),e(Ii.prototype,{addLine:function(t){this.lines.add(this.factory.createLineString(t.toCoordinateArray()))},updateRingStartEdge:function(t){return t.isStart()||(t=t.sym(),t.isStart())?null===this.ringStartEdge?(this.ringStartEdge=t,null):void(t.orig().compareTo(this.ringStartEdge.orig())<0&&(this.ringStartEdge=t)):null},getResult:function(){return null===this.result&&this.computeResult(),this.result},process:function(t){var e=t.prevNode();null===e&&(e=t),this.stackEdges(e),this.buildLines()},buildRing:function(t){var e=new N,n=t;for(e.add(n.orig().copy(),!1);2===n.sym().degree();){var i=n.next();if(i===t)break;e.add(i.orig().copy(),!1),n=i}e.add(n.dest().copy(),!1),this.addLine(e)},buildLine:function(t){var e=new N,n=t;for(this.ringStartEdge=null,mi.markBoth(n),e.add(n.orig().copy(),!1);2===n.sym().degree();){this.updateRingStartEdge(n);var i=n.next();if(i===t)return this.buildRing(this.ringStartEdge),null;e.add(i.orig().copy(),!1),n=i,mi.markBoth(n)}e.add(n.dest().copy(),!1),this.stackEdges(n.sym()),this.addLine(e)},stackEdges:function(t){var e=t;do mi.isMarked(e)||this.nodeEdgeStack.add(e),e=e.oNext();while(e!==t)},computeResult:function(){for(var t=this.graph.getVertexEdges(),e=t.iterator();e.hasNext();){var n=e.next();mi.isMarked(n)||this.process(n)}this.result=this.factory.buildGeometry(this.lines)},buildLines:function(){for(;!this.nodeEdgeStack.empty();){var t=this.nodeEdgeStack.pop();mi.isMarked(t)||this.buildLine(t)}},add:function(){if(arguments[0]instanceof B){var t=arguments[0];t.apply({interfaces_:function(){return[q]},filter:function(t){t instanceof St&&this.add(t)}})}else if(R(arguments[0],v))for(var e=arguments[0],n=e.iterator();n.hasNext();){var i=n.next();this.add(i)}else if(arguments[0]instanceof St){var r=arguments[0];null===this.factory&&(this.factory=r.getFactory());for(var s=r.getCoordinateSequence(),o=!1,n=1;nt;t++)if(null!==this.subnode[t])return!0;return!1},isPrunable:function(){return!(this.hasChildren()||this.hasItems())},addAllItems:function(t){t.addAll(this.items);for(var e=0;4>e;e++)null!==this.subnode[e]&&this.subnode[e].addAllItems(t);return t},getNodeCount:function(){for(var t=0,e=0;4>e;e++)null!==this.subnode[e]&&(t+=this.subnode[e].size());return t+1},size:function(){for(var t=0,e=0;4>e;e++)null!==this.subnode[e]&&(t+=this.subnode[e].size());return t+this.items.size()},addAllItemsFromOverlapping:function(t,e){if(!this.isSearchMatch(t))return null;e.addAll(this.items);for(var n=0;4>n;n++)null!==this.subnode[n]&&this.subnode[n].addAllItemsFromOverlapping(t,e)},visitItems:function(t,e){for(var n=this.items.iterator();n.hasNext();)e.visitItem(n.next())},hasItems:function(){return!this.items.isEmpty()},remove:function(t,e){if(!this.isSearchMatch(t))return!1;for(var n=!1,i=0;4>i;i++)if(null!==this.subnode[i]&&(n=this.subnode[i].remove(t,e))){this.subnode[i].isPrunable()&&(this.subnode[i]=null);break}return n?n:n=this.items.remove(e)},visit:function(t,e){if(!this.isSearchMatch(t))return null;this.visitItems(t,e);for(var n=0;4>n;n++)null!==this.subnode[n]&&this.subnode[n].visit(t,e)},getItems:function(){return this.items},depth:function(){for(var t=0,e=0;4>e;e++)if(null!==this.subnode[e]){var n=this.subnode[e].depth();n>t&&(t=n)}return t+1},isEmpty:function t(){var t=!0;this.items.isEmpty()||(t=!1);for(var e=0;4>e;e++)null!==this.subnode[e]&&(this.subnode[e].isEmpty()||(t=!1));return t},add:function(t){this.items.add(t)},interfaces_:function(){return[u]},getClass:function(){return Ni}}),Ni.getSubnodeIndex=function(t,e,n){var i=-1;return t.getMinX()>=e&&(t.getMinY()>=n&&(i=3),t.getMaxY()<=n&&(i=1)),t.getMaxX()<=e&&(t.getMinY()>=n&&(i=2),t.getMaxY()<=n&&(i=0)),i},Ci.exponent=function(t){return Si(64,t)-1023},Ci.powerOf2=function(t){return Math.pow(2,t)},e(wi.prototype,{getLevel:function(){return this.level},computeKey:function(){if(1===arguments.length){var t=arguments[0];for(this.level=wi.computeQuadLevel(t),this.env=new C,this.computeKey(this.level,t);!this.env.contains(t);)this.level+=1,this.computeKey(this.level,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=Ci.powerOf2(e);this.pt.x=Math.floor(n.getMinX()/i)*i,this.pt.y=Math.floor(n.getMinY()/i)*i,this.env.init(this.pt.x,this.pt.x+i,this.pt.y,this.pt.y+i)}},getEnvelope:function(){return this.env},getCentre:function(){return new g((this.env.getMinX()+this.env.getMaxX())/2,(this.env.getMinY()+this.env.getMaxY())/2)},getPoint:function(){return this.pt},interfaces_:function(){return[]},getClass:function(){return wi}}),wi.computeQuadLevel=function(t){var e=t.getWidth(),n=t.getHeight(),i=e>n?e:n,r=Ci.exponent(i)+1;return r},h(Li,Ni),e(Li.prototype,{find:function(t){var e=Ni.getSubnodeIndex(t,this.centrex,this.centrey);if(-1===e)return this;if(null!==this.subnode[e]){var n=this.subnode[e];return n.find(t)}return this},isSearchMatch:function(t){return this.env.intersects(t)},getSubnode:function(t){return null===this.subnode[t]&&(this.subnode[t]=this.createSubnode(t)),this.subnode[t]},getEnvelope:function(){return this.env},getNode:function(t){var e=Ni.getSubnodeIndex(t,this.centrex,this.centrey);if(-1!==e){var n=this.getSubnode(e);return n.getNode(t)}return this},createSubnode:function(t){var e=0,n=0,i=0,r=0;switch(t){case 0:e=this.env.getMinX(),n=this.centrex,i=this.env.getMinY(),r=this.centrey;break;case 1:e=this.centrex,n=this.env.getMaxX(),i=this.env.getMinY(),r=this.centrey;break;case 2:e=this.env.getMinX(),n=this.centrex,i=this.centrey,r=this.env.getMaxY();break;case 3:e=this.centrex,n=this.env.getMaxX(),i=this.centrey,r=this.env.getMaxY()}var s=new C(e,n,i,r),o=new Li(s,this.level-1);return o},insertNode:function(t){f.isTrue(null===this.env||this.env.contains(t.env));var e=Ni.getSubnodeIndex(t.env,this.centrex,this.centrey);if(t.level===this.level-1)this.subnode[e]=t;else{var n=this.createSubnode(e);n.insertNode(t),this.subnode[e]=n}},interfaces_:function(){return[]},getClass:function(){return Li}}),Li.createNode=function(t){var e=new wi(t),n=new Li(e.getEnvelope(),e.getLevel());return n},Li.createExpanded=function(t,e){var n=new C(e);null!==t&&n.expandToInclude(t.env);var i=Li.createNode(n);return null!==t&&i.insertNode(t),i},e(Ri.prototype,{interfaces_:function(){return[]},getClass:function(){return Ri}}),Ri.isZeroWidth=function(t,e){var n=e-t;if(0===n)return!0;var i=Math.max(Math.abs(t),Math.abs(e)),r=n/i,s=Ci.exponent(r);return s<=Ri.MIN_BINARY_EXPONENT},Ri.MIN_BINARY_EXPONENT=-50,h(Ti,Ni),e(Ti.prototype,{insert:function(t,e){var n=Ni.getSubnodeIndex(t,Ti.origin.x,Ti.origin.y);if(-1===n)return this.add(e),null;var i=this.subnode[n];if(null===i||!i.getEnvelope().contains(t)){var r=Li.createExpanded(i,t);this.subnode[n]=r}this.insertContained(this.subnode[n],t,e)},isSearchMatch:function(t){return!0},insertContained:function(t,e,n){f.isTrue(t.getEnvelope().contains(e));var i=Ri.isZeroWidth(e.getMinX(),e.getMaxX()),r=Ri.isZeroWidth(e.getMinY(),e.getMaxY()),s=null;s=i||r?t.find(e):t.getNode(e),s.add(n)},interfaces_:function(){return[]},getClass:function(){return Ti}}),Ti.origin=new g(0,0),e(Pi.prototype,{size:function(){return null!==this.root?this.root.size():0},insert:function(t,e){this.collectStats(t);var n=Pi.ensureExtent(t,this.minExtent);this.root.insert(n,e)},query:function(){if(1===arguments.length){var t=arguments[0],e=new Yn;return this.query(t,e),e.getItems()}if(2===arguments.length){var n=arguments[0],i=arguments[1];this.root.visit(n,i)}},queryAll:function(){var t=new I;return this.root.addAllItems(t),\nt},remove:function(t,e){var n=Pi.ensureExtent(t,this.minExtent);return this.root.remove(n,e)},collectStats:function(t){var e=t.getWidth();e0&&(this.minExtent=e);var n=t.getHeight();n0&&(this.minExtent=n)},depth:function(){return null!==this.root?this.root.depth():0},isEmpty:function(){return null===this.root},interfaces_:function(){return[Fe,u]},getClass:function(){return Pi}}),Pi.ensureExtent=function(t,e){var n=t.getMinX(),i=t.getMaxX(),r=t.getMinY(),s=t.getMaxY();return n!==i&&r!==s?t:(n===i&&(n-=e/2,i=n+e/2),r===s&&(r-=e/2,s=r+e/2),new C(n,i,r,s))},Pi.serialVersionUID=-0x678b60c967a25400;var po=Object.freeze({Quadtree:Pi}),vo=Object.freeze({STRtree:ke}),mo=Object.freeze({quadtree:po,strtree:vo}),yo=[\"Point\",\"MultiPoint\",\"LineString\",\"MultiLineString\",\"Polygon\",\"MultiPolygon\"];e(bi.prototype,{read:function(t){var e=void 0;e=\"string\"==typeof t?JSON.parse(t):t;var n=e.type;if(!xo[n])throw new Error(\"Unknown GeoJSON type: \"+e.type);return-1!==yo.indexOf(n)?xo[n].apply(this,[e.coordinates]):\"GeometryCollection\"===n?xo[n].apply(this,[e.geometries]):xo[n].apply(this,[e])},write:function(t){var e=t.getGeometryType();if(!Eo[e])throw new Error(\"Geometry is not supported\");return Eo[e].apply(this,[t])}});var xo={Feature:function(t){var e={};for(var n in t)e[n]=t[n];if(t.geometry){var i=t.geometry.type;if(!xo[i])throw new Error(\"Unknown GeoJSON type: \"+t.type);e.geometry=this.read(t.geometry)}return t.bbox&&(e.bbox=xo.bbox.apply(this,[t.bbox])),e},FeatureCollection:function(t){var e={};if(t.features){e.features=[];for(var n=0;ne;e++)this.precisionModel.makePrecise(t.points[e]);else if(t.geometries)for(e=0,n=t.geometries.length;n>e;e++)this.reducePrecision(t.geometries[e])}}),e(_i.prototype,{write:function(t){return this.parser.write(t)}}),e(Mi.prototype,{read:function(t){var e=this.parser.read(t);return this.precisionModel.getType()===ee.FIXED&&this.reducePrecision(e),e},reducePrecision:function(t){if(t.coordinate)this.precisionModel.makePrecise(t.coordinate);else if(t.points)for(var e=0,n=t.points.coordinates.length;n>e;e++)this.precisionModel.makePrecise(t.points.coordinates[e]);else if(t.geometries)for(var i=0,r=t.geometries.length;r>i;i++)this.reducePrecision(t.geometries[i])}}),e(Ai.prototype,{read:function(t){return t instanceof ol.geom.Point?this.convertFromPoint(t):t instanceof ol.geom.LineString?this.convertFromLineString(t):t instanceof ol.geom.LinearRing?this.convertFromLinearRing(t):t instanceof ol.geom.Polygon?this.convertFromPolygon(t):t instanceof ol.geom.MultiPoint?this.convertFromMultiPoint(t):t instanceof ol.geom.MultiLineString?this.convertFromMultiLineString(t):t instanceof ol.geom.MultiPolygon?this.convertFromMultiPolygon(t):t instanceof ol.geom.GeometryCollection?this.convertFromCollection(t):void 0},convertFromPoint:function(t){var e=t.getCoordinates();return this.geometryFactory.createPoint(new g(e[0],e[1]))},convertFromLineString:function(t){return this.geometryFactory.createLineString(t.getCoordinates().map(function(t){return new g(t[0],t[1])}))},convertFromLinearRing:function(t){return this.geometryFactory.createLinearRing(t.getCoordinates().map(function(t){return new g(t[0],t[1])}))},convertFromPolygon:function(t){for(var e=t.getLinearRings(),n=null,i=[],r=0;r=t&&(this.quadrantSegments=1),this.joinStyle!==Bi.JOIN_ROUND&&(this.quadrantSegments=Bi.DEFAULT_QUADRANT_SEGMENTS)},getJoinStyle:function(){return this.joinStyle},setJoinStyle:function(t){this.joinStyle=t},setSimplifyFactor:function(t){this.simplifyFactor=0>t?0:t},getSimplifyFactor:function(){return this.simplifyFactor},getQuadrantSegments:function(){return this.quadrantSegments},setEndCapStyle:function(t){this.endCapStyle=t},getMitreLimit:function(){return this.mitreLimit},setMitreLimit:function(t){this.mitreLimit=t},setSingleSided:function(t){this._isSingleSided=t},interfaces_:function(){return[]},getClass:function(){return Bi}}),Bi.bufferDistanceError=function(t){var e=Math.PI/2/t;return 1-Math.cos(e/2)},Bi.CAP_ROUND=1,Bi.CAP_FLAT=2,Bi.CAP_SQUARE=3,Bi.JOIN_ROUND=1,Bi.JOIN_MITRE=2,Bi.JOIN_BEVEL=3,Bi.DEFAULT_QUADRANT_SEGMENTS=8,Bi.DEFAULT_MITRE_LIMIT=5,Bi.DEFAULT_SIMPLIFY_FACTOR=.01,e(zi.prototype,{getCoordinate:function(){return this.minCoord},getRightmostSide:function(t,e){var n=this.getRightmostSideOfSegment(t,e);return 0>n&&(n=this.getRightmostSideOfSegment(t,e-1)),0>n&&(this.minCoord=null,this.checkForRightmostCoordinate(t)),n},findRightmostEdgeAtVertex:function(){var t=this.minDe.getEdge().getCoordinates();f.isTrue(this.minIndex>0&&this.minIndexthis.minCoord.y&&n.y>this.minCoord.y&&i===he.CLOCKWISE&&(r=!0),r&&(this.minIndex=this.minIndex-1)},getRightmostSideOfSegment:function(t,e){var n=t.getEdge(),i=n.getCoordinates();if(0>e||e+1>=i.length)return-1;if(i[e].y===i[e+1].y)return-1;var r=cn.LEFT;return i[e].ythis.minCoord.x)&&(this.minDe=t,this.minIndex=n,this.minCoord=e[n])},findRightmostEdgeAtNode:function(){var t=this.minDe.getNode(),e=t.getEdges();this.minDe=e.getRightmostEdge(),this.minDe.isForward()||(this.minDe=this.minDe.getSym(),this.minIndex=this.minDe.getEdge().getCoordinates().length-1)},findEdge:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();n.isForward()&&this.checkForRightmostCoordinate(n)}f.isTrue(0!==this.minIndex||this.minCoord.equals(this.minDe.getCoordinate()),\"inconsistency in rightmost processing\"),0===this.minIndex?this.findRightmostEdgeAtNode():this.findRightmostEdgeAtVertex(),this.orientedDe=this.minDe;var i=this.getRightmostSide(this.minDe,this.minIndex);i===cn.LEFT&&(this.orientedDe=this.minDe.getSym())},interfaces_:function(){return[]},getClass:function(){return zi}}),Vi.prototype.addLast=function(t){this.array_.push(t)},Vi.prototype.removeFirst=function(){return this.array_.shift()},Vi.prototype.isEmpty=function(){return 0===this.array_.length},e(ki.prototype,{clearVisitedEdges:function(){for(var t=this.dirEdgeList.iterator();t.hasNext();){var e=t.next();e.setVisited(!1)}},getRightmostCoordinate:function(){return this.rightMostCoord},computeNodeDepth:function(t){for(var e=null,n=t.getEdges().iterator();n.hasNext();){var i=n.next();if(i.isVisited()||i.getSym().isVisited()){e=i;break}}if(null===e)throw new sn(\"unable to find edge to compute depths at \"+t.getCoordinate());t.getEdges().computeDepths(e);for(var n=t.getEdges().iterator();n.hasNext();){var i=n.next();i.setVisited(!0),this.copySymDepths(i)}},computeDepth:function(t){this.clearVisitedEdges();var e=this.finder.getEdge();e.getNode(),e.getLabel();e.setEdgeDepths(cn.RIGHT,t),this.copySymDepths(e),this.computeDepths(e)},create:function(t){this.addReachable(t),this.finder.findEdge(this.dirEdgeList),this.rightMostCoord=this.finder.getCoordinate()},findResultEdges:function(){for(var t=this.dirEdgeList.iterator();t.hasNext();){var e=t.next();e.getDepth(cn.RIGHT)>=1&&e.getDepth(cn.LEFT)<=0&&!e.isInteriorAreaEdge()&&e.setInResult(!0)}},computeDepths:function(t){var e=new J,n=new Vi,i=t.getNode();for(n.addLast(i),e.add(i),t.setVisited(!0);!n.isEmpty();){var r=n.removeFirst();e.add(r),this.computeNodeDepth(r);for(var s=r.getEdges().iterator();s.hasNext();){var o=s.next(),a=o.getSym();if(!a.isVisited()){var u=a.getNode();e.contains(u)||(n.addLast(u),e.add(u))}}}},compareTo:function(t){var e=t;return this.rightMostCoord.xe.rightMostCoord.x?1:0},getEnvelope:function(){if(null===this.env){for(var t=new C,e=this.dirEdgeList.iterator();e.hasNext();)for(var n=e.next(),i=n.getEdge().getCoordinates(),r=0;ro},isShallowSampled:function(t,e,n,i,r){var s=Math.trunc((i-n)/Yi.NUM_PTS_TO_CHECK);0>=s&&(s=1);for(var o=n;i>o;o+=s)if(!this.isShallow(t,e,this.inputLine[o],r))return!1;return!0},isConcave:function t(e,n,i){var r=he.computeOrientation(e,n,i),t=r===this.angleOrientation;return t},simplify:function(t){this.distanceTol=Math.abs(t),0>t&&(this.angleOrientation=he.CLOCKWISE),this.isDeleted=new Array(this.inputLine.length).fill(null);var e=!1;do e=this.deleteShallowConcavities();while(e);return this.collapseLine()},findNextNonDeletedIndex:function(t){for(var e=t+1;er},collapseLine:function(){for(var t=new N,e=0;e=0;n--)this.addPt(t[n])},isRedundant:function(t){if(this.ptList.size()<1)return!1;var e=this.ptList.get(this.ptList.size()-1),n=t.distance(e);return n=2&&(n=this.ptList.get(this.ptList.size()-2)),t.equals(e)?null:void this.ptList.add(t)},setMinimumVertexDistance:function(t){this.minimimVertexDistance=t},interfaces_:function(){return[]},getClass:function(){return Ui}}),Ui.COORDINATE_ARRAY_TYPE=new Array(0).fill(null),e(Xi.prototype,{addNextSegment:function(t,e){if(this.s0=this.s1,this.s1=this.s2,this.s2=t,this.seg0.setCoordinates(this.s0,this.s1),this.computeOffsetSegment(this.seg0,this.side,this.distance,this.offset0),this.seg1.setCoordinates(this.s1,this.s2),this.computeOffsetSegment(this.seg1,this.side,this.distance,this.offset1),this.s1.equals(this.s2))return null;var n=he.computeOrientation(this.s0,this.s1,this.s2),i=n===he.CLOCKWISE&&this.side===cn.LEFT||n===he.COUNTERCLOCKWISE&&this.side===cn.RIGHT;0===n?this.addCollinear(e):i?this.addOutsideTurn(n,e):this.addInsideTurn(n,e)},addLineEndCap:function(t,e){var n=new ce(t,e),i=new ce;this.computeOffsetSegment(n,cn.LEFT,this.distance,i);var r=new ce;this.computeOffsetSegment(n,cn.RIGHT,this.distance,r);var s=e.x-t.x,o=e.y-t.y,a=Math.atan2(o,s);switch(this.bufParams.getEndCapStyle()){case Bi.CAP_ROUND:this.segList.addPt(i.p1),this.addFilletArc(e,a+Math.PI/2,a-Math.PI/2,he.CLOCKWISE,this.distance),this.segList.addPt(r.p1);break;case Bi.CAP_FLAT:this.segList.addPt(i.p1),this.segList.addPt(r.p1);break;case Bi.CAP_SQUARE:var u=new g;u.x=Math.abs(this.distance)*Math.cos(a),u.y=Math.abs(this.distance)*Math.sin(a);var l=new g(i.p1.x+u.x,i.p1.y+u.y),h=new g(r.p1.x+u.x,r.p1.y+u.y);this.segList.addPt(l),this.segList.addPt(h)}},getCoordinates:function(){var t=this.segList.getCoordinates();return t},addMitreJoin:function(t,e,n,i){var r=!0,s=null;try{s=F.intersection(e.p0,e.p1,n.p0,n.p1);var o=0>=i?1:s.distance(t)/Math.abs(i);o>this.bufParams.getMitreLimit()&&(r=!1)}catch(t){if(!(t instanceof w))throw t;s=new g(0,0),r=!1}finally{}r?this.segList.addPt(s):this.addLimitedMitreJoin(e,n,i,this.bufParams.getMitreLimit())},addFilletCorner:function(t,e,n,i,r){var s=e.x-t.x,o=e.y-t.y,a=Math.atan2(o,s),u=n.x-t.x,l=n.y-t.y,h=Math.atan2(l,u);i===he.CLOCKWISE?h>=a&&(a+=2*Math.PI):a>=h&&(a-=2*Math.PI),this.segList.addPt(e),this.addFilletArc(t,a,h,i,r),this.segList.addPt(n)},addOutsideTurn:function(t,e){return this.offset0.p1.distance(this.offset1.p0)a)return null;var u=null,l=null;u=0,l=o/a;for(var h=u,c=new g;o>h;){var f=e+s*h;c.x=t.x+r*Math.cos(f),c.y=t.y+r*Math.sin(f),this.segList.addPt(c),h+=l}},addInsideTurn:function(t,e){if(this.li.computeIntersection(this.offset0.p0,this.offset0.p1,this.offset1.p0,this.offset1.p1),this.li.hasIntersection())this.segList.addPt(this.li.getIntersection(0));else if(this._hasNarrowConcaveAngle=!0,this.offset0.p1.distance(this.offset1.p0)0){var n=new g((this.closingSegLengthFactor*this.offset0.p1.x+this.s1.x)/(this.closingSegLengthFactor+1),(this.closingSegLengthFactor*this.offset0.p1.y+this.s1.y)/(this.closingSegLengthFactor+1));this.segList.addPt(n);var i=new g((this.closingSegLengthFactor*this.offset1.p0.x+this.s1.x)/(this.closingSegLengthFactor+1),(this.closingSegLengthFactor*this.offset1.p0.y+this.s1.y)/(this.closingSegLengthFactor+1));this.segList.addPt(i)}else this.segList.addPt(this.s1);this.segList.addPt(this.offset1.p0)}},createCircle:function(t){var e=new g(t.x+this.distance,t.y);this.segList.addPt(e),this.addFilletArc(t,0,2*Math.PI,-1,this.distance),this.segList.closeRing()},addBevelJoin:function(t,e){this.segList.addPt(t.p1),this.segList.addPt(e.p0)},init:function(t){this.distance=t,this.maxCurveSegmentError=t*(1-Math.cos(this.filletAngleQuantum/2)),this.segList=new Ui,this.segList.setPrecisionModel(this.precisionModel),this.segList.setMinimumVertexDistance(t*Xi.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)},addCollinear:function(t){this.li.computeIntersection(this.s0,this.s1,this.s1,this.s2);var e=this.li.getIntersectionNum();e>=2&&(this.bufParams.getJoinStyle()===Bi.JOIN_BEVEL||this.bufParams.getJoinStyle()===Bi.JOIN_MITRE?(t&&this.segList.addPt(this.offset0.p1),this.segList.addPt(this.offset1.p0)):this.addFilletCorner(this.s1,this.offset0.p1,this.offset1.p0,he.CLOCKWISE,this.distance))},closeRing:function(){this.segList.closeRing()},hasNarrowConcaveAngle:function(){return this._hasNarrowConcaveAngle},interfaces_:function(){return[]},getClass:function(){return Xi}}),Xi.OFFSET_SEGMENT_SEPARATION_FACTOR=.001,Xi.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR=.001,Xi.CURVE_VERTEX_SNAP_DISTANCE_FACTOR=1e-6,Xi.MAX_CLOSING_SEG_LEN_FACTOR=80,e(Hi.prototype,{getOffsetCurve:function(t,e){if(this.distance=e,0===e)return null;var n=0>e,i=Math.abs(e),r=this.getSegGen(i);t.length<=1?this.computePointCurve(t[0],r):this.computeOffsetCurve(t,n,r);var s=r.getCoordinates();return n&&H.reverse(s),s},computeSingleSidedBufferCurve:function(t,e,n){var i=this.simplifyTolerance(this.distance);if(e){n.addSegments(t,!0);var r=Yi.simplify(t,-i),s=r.length-1;n.initSideSegments(r[s],r[s-1],cn.LEFT),n.addFirstSegment();for(var o=s-2;o>=0;o--)n.addNextSegment(r[o],!0)}else{n.addSegments(t,!1);var a=Yi.simplify(t,i),u=a.length-1;n.initSideSegments(a[0],a[1],cn.LEFT),n.addFirstSegment();for(var o=2;u>=o;o++)n.addNextSegment(a[o],!0)}n.addLastSegment(),n.closeRing()},computeRingBufferCurve:function(t,e,n){var i=this.simplifyTolerance(this.distance);e===cn.RIGHT&&(i=-i);var r=Yi.simplify(t,i),s=r.length-1;n.initSideSegments(r[s-1],r[0],e);for(var o=1;s>=o;o++){var a=1!==o;n.addNextSegment(r[o],a)}n.closeRing()},computeLineBufferCurve:function(t,e){var n=this.simplifyTolerance(this.distance),i=Yi.simplify(t,n),r=i.length-1;e.initSideSegments(i[0],i[1],cn.LEFT);for(var s=2;r>=s;s++)e.addNextSegment(i[s],!0);e.addLastSegment(),e.addLineEndCap(i[r-1],i[r]);var o=Yi.simplify(t,-n),a=o.length-1;e.initSideSegments(o[a],o[a-1],cn.LEFT);for(var s=a-2;s>=0;s--)e.addNextSegment(o[s],!0);e.addLastSegment(),e.addLineEndCap(o[1],o[0]),e.closeRing()},computePointCurve:function(t,e){switch(this.bufParams.getEndCapStyle()){case Bi.CAP_ROUND:e.createCircle(t);break;case Bi.CAP_SQUARE:e.createSquare(t)}},getLineCurve:function(t,e){if(this.distance=e,0>e&&!this.bufParams.isSingleSided())return null;if(0===e)return null;var n=Math.abs(e),i=this.getSegGen(n);if(t.length<=1)this.computePointCurve(t[0],i);else if(this.bufParams.isSingleSided()){var r=0>e;this.computeSingleSidedBufferCurve(t,r,i)}else this.computeLineBufferCurve(t,i);var s=i.getCoordinates();return s},getBufferParameters:function(){return this.bufParams},simplifyTolerance:function(t){return t*this.bufParams.getSimplifyFactor()},getRingCurve:function(t,e,n){if(this.distance=n,t.length<=2)return this.getLineCurve(t,n);if(0===n)return Hi.copyCoordinates(t);var i=this.getSegGen(n);return this.computeRingBufferCurve(t,e,i),i.getCoordinates()},computeOffsetCurve:function(t,e,n){var i=this.simplifyTolerance(this.distance);if(e){var r=Yi.simplify(t,-i),s=r.length-1;n.initSideSegments(r[s],r[s-1],cn.LEFT),n.addFirstSegment();for(var o=s-2;o>=0;o--)n.addNextSegment(r[o],!0)}else{var a=Yi.simplify(t,i),u=a.length-1;n.initSideSegments(a[0],a[1],cn.LEFT),n.addFirstSegment();for(var o=2;u>=o;o++)n.addNextSegment(a[o],!0)}n.addLastSegment()},getSegGen:function(t){return new Xi(this.precisionModel,this.bufParams,t)},interfaces_:function(){return[]},getClass:function(){return Hi}}),Hi.copyCoordinates=function(t){for(var e=new Array(t.length).fill(null),n=0;nr.getMaxY()||this.findStabbedSegments(t,i.getDirectedEdges(),e)}return e}if(3===arguments.length)if(R(arguments[2],y)&&arguments[0]instanceof g&&arguments[1]instanceof In)for(var s=arguments[0],o=arguments[1],a=arguments[2],u=o.getEdge().getCoordinates(),n=0;nthis.seg.p1.y&&this.seg.reverse();var l=Math.max(this.seg.p0.x,this.seg.p1.x);if(!(lthis.seg.p1.y||he.computeOrientation(this.seg.p0,this.seg.p1,s)===he.RIGHT)){var h=o.getDepth(cn.LEFT);this.seg.p0.equals(u[n])||(h=o.getDepth(cn.RIGHT));var c=new ji(this.seg,h);a.add(c)}}else if(R(arguments[2],y)&&arguments[0]instanceof g&&R(arguments[1],y))for(var f=arguments[0],d=arguments[1],p=arguments[2],n=d.iterator();n.hasNext();){var v=n.next();v.isForward()&&this.findStabbedSegments(f,v,p)}},getDepth:function(t){var e=this.findStabbedSegments(t);if(0===e.size())return 0;var n=ho.min(e);return n.leftDepth},interfaces_:function(){return[]},getClass:function(){return Wi}}),e(ji.prototype,{compareTo:function(t){var e=t;if(this.upwardSeg.minX()>=e.upwardSeg.maxX())return 1;if(this.upwardSeg.maxX()<=e.upwardSeg.minX())return-1;var n=this.upwardSeg.orientationIndex(e.upwardSeg);return 0!==n?n:(n=-1*e.upwardSeg.orientationIndex(this.upwardSeg),0!==n?n:this.upwardSeg.compareTo(e.upwardSeg))},compareX:function(t,e){var n=t.p0.compareTo(e.p0);return 0!==n?n:t.p1.compareTo(e.p1)},toString:function(){return this.upwardSeg.toString()},interfaces_:function(){return[s]},getClass:function(){return ji}}),Wi.DepthSegment=ji,e(Ki.prototype,{addPoint:function(t){if(this.distance<=0)return null;\nvar e=t.getCoordinates(),n=this.curveBuilder.getLineCurve(e,this.distance);this.addCurve(n,L.EXTERIOR,L.INTERIOR)},addPolygon:function(t){var e=this.distance,n=cn.LEFT;this.distance<0&&(e=-this.distance,n=cn.RIGHT);var i=t.getExteriorRing(),r=H.removeRepeatedPoints(i.getCoordinates());if(this.distance<0&&this.isErodedCompletely(i,this.distance))return null;if(this.distance<=0&&r.length<3)return null;this.addPolygonRing(r,e,n,L.EXTERIOR,L.INTERIOR);for(var s=0;s0&&this.isErodedCompletely(o,-this.distance)||this.addPolygonRing(a,e,cn.opposite(n),L.INTERIOR,L.EXTERIOR)}},isTriangleErodedCompletely:function(t,e){var n=new ci(t[0],t[1],t[2]),i=n.inCentre(),r=he.distancePointLine(i,n.p0,n.p1);return r=bt.MINIMUM_VALID_SIZE&&he.isCCW(t)&&(s=r,o=i,n=cn.opposite(n));var a=this.curveBuilder.getRingCurve(t,n,e);this.addCurve(a,s,o)},add:function(t){if(t.isEmpty())return null;if(t instanceof Tt)this.addPolygon(t);else if(t instanceof St)this.addLineString(t);else if(t instanceof Lt)this.addPoint(t);else if(t instanceof Pt)this.addCollection(t);else if(t instanceof gt)this.addCollection(t);else if(t instanceof Ot)this.addCollection(t);else{if(!(t instanceof ft))throw new UnsupportedOperationException(t.getClass().getName());this.addCollection(t)}},isErodedCompletely:function(t,e){var n=t.getCoordinates();if(n.length<4)return 0>e;if(4===n.length)return this.isTriangleErodedCompletely(n,e);var i=t.getEnvelopeInternal(),r=Math.min(i.getHeight(),i.getWidth());return 0>e&&2*Math.abs(e)>r},addCollection:function(t){for(var e=0;ei||this.maxys;if(o)return!1;var a=this.intersectsToleranceSquare(t,e);return f.isTrue(!(o&&a),\"Found bad envelope test\"),a},initCorners:function(t){var e=.5;this.minx=t.x-e,this.maxx=t.x+e,this.miny=t.y-e,this.maxy=t.y+e,this.corner[0]=new g(this.maxx,this.maxy),this.corner[1]=new g(this.minx,this.maxy),this.corner[2]=new g(this.minx,this.miny),this.corner[3]=new g(this.maxx,this.miny)},intersects:function(t,e){return 1===this.scaleFactor?this.intersectsScaled(t,e):(this.copyScaled(t,this.p0Scaled),this.copyScaled(e,this.p1Scaled),this.intersectsScaled(this.p0Scaled,this.p1Scaled))},scale:function(t){return Math.round(t*this.scaleFactor)},getCoordinate:function(){return this.originalPt},copyScaled:function(t,e){e.x=this.scale(t.x),e.y=this.scale(t.y)},getSafeEnvelope:function(){if(null===this.safeEnv){var t=$i.SAFE_ENV_EXPANSION_FACTOR/this.scaleFactor;this.safeEnv=new C(this.originalPt.x-t,this.originalPt.x+t,this.originalPt.y-t,this.originalPt.y+t)}return this.safeEnv},intersectsPixelClosure:function(t,e){return this.li.computeIntersection(t,e,this.corner[0],this.corner[1]),this.li.hasIntersection()?!0:(this.li.computeIntersection(t,e,this.corner[1],this.corner[2]),this.li.hasIntersection()?!0:(this.li.computeIntersection(t,e,this.corner[2],this.corner[3]),this.li.hasIntersection()?!0:(this.li.computeIntersection(t,e,this.corner[3],this.corner[0]),!!this.li.hasIntersection())))},intersectsToleranceSquare:function(t,e){var n=!1,i=!1;return this.li.computeIntersection(t,e,this.corner[0],this.corner[1]),this.li.isProper()?!0:(this.li.computeIntersection(t,e,this.corner[1],this.corner[2]),this.li.isProper()?!0:(this.li.hasIntersection()&&(n=!0),this.li.computeIntersection(t,e,this.corner[2],this.corner[3]),this.li.isProper()?!0:(this.li.hasIntersection()&&(i=!0),this.li.computeIntersection(t,e,this.corner[3],this.corner[0]),this.li.isProper()?!0:n&&i?!0:t.equals(this.pt)?!0:!!e.equals(this.pt))))},addSnappedNode:function(t,e){var n=t.getCoordinate(e),i=t.getCoordinate(e+1);return this.intersects(n,i)?(t.addIntersection(this.getCoordinate(),e),!0):!1},interfaces_:function(){return[]},getClass:function(){return $i}}),$i.SAFE_ENV_EXPANSION_FACTOR=.75,e(tr.prototype,{select:function(){if(1===arguments.length){arguments[0]}else if(2===arguments.length){var t=arguments[0],e=arguments[1];t.getLineSegment(e,this.selectedSegment),this.select(this.selectedSegment)}},interfaces_:function(){return[]},getClass:function(){return tr}}),e(er.prototype,{snap:function(){if(1===arguments.length){var t=arguments[0];return this.snap(t,null,-1)}if(3===arguments.length){var e=arguments[0],n=arguments[1],i=arguments[2],r=e.getSafeEnvelope(),s=new nr(e,n,i);return this.index.query(r,{interfaces_:function(){return[Ae]},visitItem:function(t){var e=t;e.select(r,s)}}),s.isNodeAdded()}},interfaces_:function(){return[]},getClass:function(){return er}}),h(nr,tr),e(nr.prototype,{isNodeAdded:function(){return this._isNodeAdded},select:function(){if(2!==arguments.length)return tr.prototype.select.apply(this,arguments);var t=arguments[0],e=arguments[1],n=t.getContext();return null!==this.parentEdge&&n===this.parentEdge&&e===this.hotPixelVertexIndex?null:void(this._isNodeAdded=this.hotPixel.addSnappedNode(n,e))},interfaces_:function(){return[]},getClass:function(){return nr}}),er.HotPixelSnapAction=nr,e(ir.prototype,{processIntersections:function(t,e,n,i){if(t===n&&e===i)return null;var r=t.getCoordinates()[e],s=t.getCoordinates()[e+1],o=n.getCoordinates()[i],a=n.getCoordinates()[i+1];if(this.li.computeIntersection(r,s,o,a),this.li.hasIntersection()&&this.li.isInteriorIntersection()){for(var u=0;u=0;t--){try{this.bufferReducedPrecision(t)}catch(t){if(!(t instanceof sn))throw t;this.saveException=t}finally{}if(null!==this.resultGeometry)return null}throw this.saveException}if(1===arguments.length){var e=arguments[0],n=sr.precisionScaleFactor(this.argGeom,this.distance,e),i=new ee(n);this.bufferFixedPrecision(i)}},computeGeometry:function(){if(this.bufferOriginalPrecision(),null!==this.resultGeometry)return null;var t=this.argGeom.getFactory().getPrecisionModel();t.getType()===ee.FIXED?this.bufferFixedPrecision(t):this.bufferReducedPrecision()},setQuadrantSegments:function(t){this.bufParams.setQuadrantSegments(t)},bufferOriginalPrecision:function(){try{var t=new Qi(this.bufParams);this.resultGeometry=t.buffer(this.argGeom,this.distance)}catch(t){if(!(t instanceof l))throw t;this.saveException=t}finally{}},getResultGeometry:function(t){return this.distance=t,this.computeGeometry(),this.resultGeometry},setEndCapStyle:function(t){this.bufParams.setEndCapStyle(t)},interfaces_:function(){return[]},getClass:function(){return sr}}),sr.bufferOp=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=new sr(t),i=n.getResultGeometry(e);return i}if(3===arguments.length){if(Number.isInteger(arguments[2])&&arguments[0]instanceof B&&\"number\"==typeof arguments[1]){var r=arguments[0],s=arguments[1],o=arguments[2],a=new sr(r);a.setQuadrantSegments(o);var i=a.getResultGeometry(s);return i}if(arguments[2]instanceof Bi&&arguments[0]instanceof B&&\"number\"==typeof arguments[1]){var u=arguments[0],l=arguments[1],h=arguments[2],a=new sr(u,h),i=a.getResultGeometry(l);return i}}else if(4===arguments.length){var c=arguments[0],f=arguments[1],g=arguments[2],d=arguments[3],a=new sr(c);a.setQuadrantSegments(g),a.setEndCapStyle(d);var i=a.getResultGeometry(f);return i}},sr.precisionScaleFactor=function(t,e,n){var i=t.getEnvelopeInternal(),r=T.max(Math.abs(i.getMaxX()),Math.abs(i.getMaxY()),Math.abs(i.getMinX()),Math.abs(i.getMinY())),s=e>0?e:0,o=r+2*s,a=Math.trunc(Math.log(o)/Math.log(10)+1),u=n-a,l=Math.pow(10,u);return l},sr.CAP_ROUND=Bi.CAP_ROUND,sr.CAP_BUTT=Bi.CAP_FLAT,sr.CAP_FLAT=Bi.CAP_FLAT,sr.CAP_SQUARE=Bi.CAP_SQUARE,sr.MAX_PRECISION_DIGITS=12;var Co=Object.freeze({BufferOp:sr,BufferParameters:Bi});e(or.prototype,{filter:function(t){t instanceof Tt&&this.comps.add(t)},interfaces_:function(){return[ht]},getClass:function(){return or}}),or.getPolygons=function(){if(1===arguments.length){var t=arguments[0];return or.getPolygons(t,new I)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e instanceof Tt?n.add(e):e instanceof ft&&e.apply(new or(n)),n}},e(ar.prototype,{isInsideArea:function(){return this.segIndex===ar.INSIDE_AREA},getCoordinate:function(){return this.pt},getGeometryComponent:function(){return this.component},getSegmentIndex:function(){return this.segIndex},interfaces_:function(){return[]},getClass:function(){return ar}}),ar.INSIDE_AREA=-1,e(ur.prototype,{filter:function(t){t instanceof Lt&&this.pts.add(t)},interfaces_:function(){return[ht]},getClass:function(){return ur}}),ur.getPoints=function(){if(1===arguments.length){var t=arguments[0];return t instanceof Lt?ho.singletonList(t):ur.getPoints(t,new I)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e instanceof Lt?n.add(e):e instanceof ft&&e.apply(new ur(n)),n}},e(lr.prototype,{filter:function(t){(t instanceof Lt||t instanceof St||t instanceof Tt)&&this.locations.add(new ar(t,0,t.getCoordinate()))},interfaces_:function(){return[ht]},getClass:function(){return lr}}),lr.getLocations=function(t){var e=new I;return t.apply(new lr(e)),e},e(hr.prototype,{computeContainmentDistance:function(){if(0===arguments.length){var t=new Array(2).fill(null);if(this.computeContainmentDistance(0,t),this.minDistance<=this.terminateDistance)return null;this.computeContainmentDistance(1,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=1-e,r=or.getPolygons(this.geom[e]);if(r.size()>0){var s=lr.getLocations(this.geom[i]);if(this.computeContainmentDistance(s,r,n),this.minDistance<=this.terminateDistance)return this.minDistanceLocation[i]=n[0],this.minDistanceLocation[e]=n[1],null}}else if(3===arguments.length)if(arguments[2]instanceof Array&&R(arguments[0],y)&&R(arguments[1],y)){for(var o=arguments[0],a=arguments[1],u=arguments[2],l=0;lthis.minDistance)return null;for(var i=t.getCoordinates(),r=e.getCoordinate(),s=0;sthis.minDistance)return null;for(var i=l.getCoordinates(),f=h.getCoordinates(),s=0;st&&H.reverse(this.coordinates)}return this.coordinates},toLineString:function(){return this.factory.createLineString(this.getCoordinates())},add:function(t){this.directedEdges.add(t)},interfaces_:function(){return[]},getClass:function(){return cr}}),e(fr.prototype,{setVisited:function(t){this._isVisited=t},isMarked:function(){return this._isMarked},setData:function(t){this.data=t},getData:function(){return this.data},setMarked:function(t){this._isMarked=t},getContext:function(){return this.data},isVisited:function(){return this._isVisited},setContext:function(t){this.data=t},interfaces_:function(){return[]},getClass:function(){return fr}}),fr.getComponentWithVisitedState=function(t,e){for(;t.hasNext();){var n=t.next();if(n.isVisited()===e)return n}return null},fr.setVisited=function(t,e){for(;t.hasNext();){var n=t.next();n.setVisited(e)}},fr.setMarked=function(t,e){for(;t.hasNext();){var n=t.next();n.setMarked(e)}},h(gr,fr),e(gr.prototype,{isRemoved:function(){return null===this.parentEdge},compareDirection:function(t){return this.quadrant>t.quadrant?1:this.quadrants&&(s+=this.outEdges.size()),s}},add:function(t){this.outEdges.add(t),this.sorted=!1},getDegree:function(){return this.outEdges.size()},interfaces_:function(){return[]},getClass:function(){return vr}}),h(mr,fr),e(mr.prototype,{isRemoved:function(){return null===this.pt},addOutEdge:function(t){this.deStar.add(t)},getCoordinate:function(){return this.pt},getOutEdges:function(){return this.deStar},remove:function(){if(0===arguments.length)this.pt=null;else if(1===arguments.length){var t=arguments[0];this.deStar.remove(t)}},getIndex:function(t){return this.deStar.getIndex(t)},getDegree:function(){return this.deStar.getDegree()},interfaces_:function(){return[]},getClass:function(){return mr}}),mr.getEdgesBetween=function(t,e){var n=gr.toEdges(t.getOutEdges().getEdges()),i=new J(n),r=gr.toEdges(e.getOutEdges().getEdges());return i.retainAll(r),i},h(yr,pr),e(yr.prototype,{getLine:function(){return this.line},interfaces_:function(){return[]},getClass:function(){return yr}}),e(xr.prototype,{find:function(t){return this.nodeMap.get(t)},iterator:function(){return this.nodeMap.values().iterator()},remove:function(t){return this.nodeMap.remove(t)},values:function(){return this.nodeMap.values()},add:function(t){return this.nodeMap.put(t.getCoordinate(),t),t},interfaces_:function(){return[]},getClass:function(){return xr}}),e(Er.prototype,{findNodesOfDegree:function(t){for(var e=new I,n=this.nodeIterator();n.hasNext();){var i=n.next();i.getDegree()===t&&e.add(i)}return e},dirEdgeIterator:function(){return this.dirEdges.iterator()},edgeIterator:function(){return this.edges.iterator()},remove:function(){if(arguments[0]instanceof pr){var t=arguments[0];this.remove(t.getDirEdge(0)),this.remove(t.getDirEdge(1)),this.edges.remove(t),t.remove()}else if(arguments[0]instanceof gr){var e=arguments[0],n=e.getSym();null!==n&&n.setSym(null),e.getFromNode().remove(e),e.remove(),this.dirEdges.remove(e)}else if(arguments[0]instanceof mr){for(var i=arguments[0],r=i.getOutEdges().getEdges(),s=r.iterator();s.hasNext();){var o=s.next(),n=o.getSym();null!==n&&this.remove(n),this.dirEdges.remove(o);var a=o.getEdge();null!==a&&this.edges.remove(a)}this.nodeMap.remove(i.getCoordinate()),i.remove()}},findNode:function(t){return this.nodeMap.find(t)},getEdges:function(){return this.edges},nodeIterator:function(){return this.nodeMap.iterator()},contains:function(){if(arguments[0]instanceof pr){var t=arguments[0];return this.edges.contains(t)}if(arguments[0]instanceof gr){var e=arguments[0];return this.dirEdges.contains(e)}},add:function(){if(arguments[0]instanceof mr){var t=arguments[0];this.nodeMap.add(t)}else if(arguments[0]instanceof pr){var e=arguments[0];this.edges.add(e),this.add(e.getDirEdge(0)),this.add(e.getDirEdge(1))}else if(arguments[0]instanceof gr){var n=arguments[0];this.dirEdges.add(n)}},getNodes:function(){return this.nodeMap.values()},interfaces_:function(){return[]},getClass:function(){return Er}}),h(Ir,Er),e(Ir.prototype,{addEdge:function(t){if(t.isEmpty())return null;var e=H.removeRepeatedPoints(t.getCoordinates());if(e.length<=1)return null;var n=e[0],i=e[e.length-1],r=this.getNode(n),s=this.getNode(i),o=new dr(r,s,e[1],!0),a=new dr(s,r,e[e.length-2],!1),u=new yr(t);u.setDirectedEdges(o,a),this.add(u)},getNode:function(t){var e=this.findNode(t);return null===e&&(e=new mr(t),this.add(e)),e},interfaces_:function(){return[]},getClass:function(){return Ir}}),e(Nr.prototype,{buildEdgeStringsForUnprocessedNodes:function(){for(var t=this.graph.getNodes().iterator();t.hasNext();){var e=t.next();e.isMarked()||(f.isTrue(2===e.getDegree()),this.buildEdgeStringsStartingAt(e),e.setMarked(!0))}},buildEdgeStringsForNonDegree2Nodes:function(){for(var t=this.graph.getNodes().iterator();t.hasNext();){var e=t.next();2!==e.getDegree()&&(this.buildEdgeStringsStartingAt(e),e.setMarked(!0))}},buildEdgeStringsForObviousStartNodes:function(){this.buildEdgeStringsForNonDegree2Nodes()},getMergedLineStrings:function(){return this.merge(),this.mergedLineStrings},buildEdgeStringsStartingAt:function(t){for(var e=t.getOutEdges().iterator();e.hasNext();){var n=e.next();n.getEdge().isMarked()||this.edgeStrings.add(this.buildEdgeStringStartingWith(n))}},merge:function(){if(null!==this.mergedLineStrings)return null;fr.setMarked(this.graph.nodeIterator(),!1),fr.setMarked(this.graph.edgeIterator(),!1),this.edgeStrings=new I,this.buildEdgeStringsForObviousStartNodes(),this.buildEdgeStringsForIsolatedLoops(),this.mergedLineStrings=new I;for(var t=this.edgeStrings.iterator();t.hasNext();){var e=t.next();this.mergedLineStrings.add(e.toLineString())}},buildEdgeStringStartingWith:function(t){var e=new cr(this.factory),n=t;do e.add(n),n.getEdge().setMarked(!0),n=n.getNext();while(null!==n&&n!==t);return e},add:function(){if(arguments[0]instanceof B){var t=arguments[0];t.apply({interfaces_:function(){return[q]},filter:function(t){t instanceof St&&this.add(t)}})}else if(R(arguments[0],v)){var e=arguments[0];this.mergedLineStrings=null;for(var n=e.iterator();n.hasNext();){\nvar i=n.next();this.add(i)}}else if(arguments[0]instanceof St){var r=arguments[0];null===this.factory&&(this.factory=r.getFactory()),this.graph.addEdge(r)}},buildEdgeStringsForIsolatedLoops:function(){this.buildEdgeStringsForUnprocessedNodes()},interfaces_:function(){return[]},getClass:function(){return Nr}});var wo=Object.freeze({LineMerger:Nr}),Lo=Object.freeze({OverlayOp:ii});h(Cr,gr),e(Cr.prototype,{getNext:function(){return this.next},isInRing:function(){return null!==this.edgeRing},setRing:function(t){this.edgeRing=t},setLabel:function(t){this.label=t},getLabel:function(){return this.label},setNext:function(t){this.next=t},getRing:function(){return this.edgeRing},interfaces_:function(){return[]},getClass:function(){return Cr}}),h(Sr,pr),e(Sr.prototype,{getLine:function(){return this.line},interfaces_:function(){return[]},getClass:function(){return Sr}}),e(wr.prototype,{isIncluded:function(){return this._isIncluded},getCoordinates:function(){if(null===this.ringPts){for(var t=new N,e=this.deList.iterator();e.hasNext();){var n=e.next(),i=n.getEdge();wr.addEdge(i.getLine().getCoordinates(),n.getEdgeDirection(),t)}this.ringPts=t.toCoordinateArray()}return this.ringPts},isIncludedSet:function(){return this._isIncludedSet},isValid:function(){return this.getCoordinates(),this.ringPts.length<=3?!1:(this.getRing(),this.ring.isValid())},build:function(t){var e=t;do this.add(e),e.setRing(this),e=e.getNext(),f.isTrue(null!==e,\"found null DE in ring\"),f.isTrue(e===t||!e.isInRing(),\"found DE already in ring\");while(e!==t)},isOuterHole:function(){return this._isHole?!this.hasShell():!1},getPolygon:function(){var t=null;if(null!==this.holes){t=new Array(this.holes.size()).fill(null);for(var e=0;e=0;i--)n.add(t[i],!1)},wr.findEdgeRingContaining=function(t,e){for(var n=t.getRing(),i=n.getEnvelopeInternal(),r=n.getCoordinateN(0),s=null,o=null,a=e.iterator();a.hasNext();){var u=a.next(),l=u.getRing(),h=l.getEnvelopeInternal();if(!h.equals(i)&&h.contains(i)){r=H.ptNotInList(n.getCoordinates(),l.getCoordinates());var c=!1;he.isPointInRing(r,l.getCoordinates())&&(c=!0),c&&(null===s||o.contains(h))&&(s=u,o=s.getRing().getEnvelopeInternal())}}return s},e(Lr.prototype,{compare:function(t,e){var n=t,i=e;return n.getRing().getEnvelope().compareTo(i.getRing().getEnvelope())},interfaces_:function(){return[a]},getClass:function(){return Lr}}),wr.EnvelopeComparator=Lr,h(Rr,Er),e(Rr.prototype,{findEdgeRing:function(t){var e=new wr(this.factory);return e.build(t),e},computeDepthParity:function(){if(0===arguments.length)for(;;){var t=null;if(null===t)return null;this.computeDepthParity(t)}else if(1===arguments.length){arguments[0]}},computeNextCWEdges:function(){for(var t=this.nodeIterator();t.hasNext();){var e=t.next();Rr.computeNextCWEdges(e)}},addEdge:function(t){if(t.isEmpty())return null;var e=H.removeRepeatedPoints(t.getCoordinates());if(e.length<2)return null;var n=e[0],i=e[e.length-1],r=this.getNode(n),s=this.getNode(i),o=new Cr(r,s,e[1],!0),a=new Cr(s,r,e[e.length-2],!1),u=new Sr(t);u.setDirectedEdges(o,a),this.add(u)},deleteCutEdges:function(){this.computeNextCWEdges(),Rr.findLabeledEdgeRings(this.dirEdges);for(var t=new I,e=this.dirEdges.iterator();e.hasNext();){var n=e.next();if(!n.isMarked()){var i=n.getSym();if(n.getLabel()===i.getLabel()){n.setMarked(!0),i.setMarked(!0);var r=n.getEdge();t.add(r.getLine())}}}return t},getEdgeRings:function(){this.computeNextCWEdges(),Rr.label(this.dirEdges,-1);var t=Rr.findLabeledEdgeRings(this.dirEdges);this.convertMaximalToMinimalEdgeRings(t);for(var e=new I,n=this.dirEdges.iterator();n.hasNext();){var i=n.next();if(!i.isMarked()&&!i.isInRing()){var r=this.findEdgeRing(i);e.add(r)}}return e},getNode:function(t){var e=this.findNode(t);return null===e&&(e=new mr(t),this.add(e)),e},convertMaximalToMinimalEdgeRings:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next(),i=n.getLabel(),r=Rr.findIntersectionNodes(n,i);if(null!==r)for(var s=r.iterator();s.hasNext();){var o=s.next();Rr.computeNextCCWEdges(o,i)}}},deleteDangles:function(){for(var t=this.findNodesOfDegree(1),e=new J,n=new pe,i=t.iterator();i.hasNext();)n.push(i.next());for(;!n.isEmpty();){var r=n.pop();Rr.deleteAllEdges(r);for(var s=r.getOutEdges().getEdges(),i=s.iterator();i.hasNext();){var o=i.next();o.setMarked(!0);var a=o.getSym();null!==a&&a.setMarked(!0);var u=o.getEdge();e.add(u.getLine());var l=o.getToNode();1===Rr.getDegreeNonDeleted(l)&&n.push(l)}}return e},interfaces_:function(){return[]},getClass:function(){return Rr}}),Rr.findLabeledEdgeRings=function(t){for(var e=new I,n=1,i=t.iterator();i.hasNext();){var r=i.next();if(!(r.isMarked()||r.getLabel()>=0)){e.add(r);var s=wr.findDirEdgesInRing(r);Rr.label(s,n),n++}}return e},Rr.getDegreeNonDeleted=function(t){for(var e=t.getOutEdges().getEdges(),n=0,i=e.iterator();i.hasNext();){var r=i.next();r.isMarked()||n++}return n},Rr.deleteAllEdges=function(t){for(var e=t.getOutEdges().getEdges(),n=e.iterator();n.hasNext();){var i=n.next();i.setMarked(!0);var r=i.getSym();null!==r&&r.setMarked(!0)}},Rr.label=function(t,e){for(var n=t.iterator();n.hasNext();){var i=n.next();i.setLabel(e)}},Rr.computeNextCWEdges=function(t){for(var e=t.getOutEdges(),n=null,i=null,r=e.getEdges().iterator();r.hasNext();){var s=r.next();if(!s.isMarked()){if(null===n&&(n=s),null!==i){var o=i.getSym();o.setNext(s)}i=s}}if(null!==i){var o=i.getSym();o.setNext(n)}},Rr.computeNextCCWEdges=function(t,e){for(var n=t.getOutEdges(),i=null,r=null,s=n.getEdges(),o=s.size()-1;o>=0;o--){var a=s.get(o),u=a.getSym(),l=null;a.getLabel()===e&&(l=a);var h=null;u.getLabel()===e&&(h=u),null===l&&null===h||(null!==h&&(r=h),null!==l&&(null!==r&&(r.setNext(l),r=null),null===i&&(i=l)))}null!==r&&(f.isTrue(null!==i),r.setNext(i))},Rr.getDegree=function(t,e){for(var n=t.getOutEdges().getEdges(),i=0,r=n.iterator();r.hasNext();){var s=r.next();s.getLabel()===e&&i++}return i},Rr.findIntersectionNodes=function(t,e){var n=t,i=null;do{var r=n.getFromNode();Rr.getDegree(r,e)>1&&(null===i&&(i=new I),i.add(r)),n=n.getNext(),f.isTrue(null!==n,\"found null DE in ring\"),f.isTrue(n===t||!n.isInRing(),\"found DE already in ring\")}while(n!==t);return i},e(Tr.prototype,{getGeometry:function(){return null===this.geomFactory&&(this.geomFactory=new ie),this.polygonize(),this.extractOnlyPolygonal?this.geomFactory.buildGeometry(this.polyList):this.geomFactory.createGeometryCollection(ie.toGeometryArray(this.polyList))},getInvalidRingLines:function(){return this.polygonize(),this.invalidRingLines},findValidRings:function(t,e,n){for(var i=t.iterator();i.hasNext();){var r=i.next();r.isValid()?e.add(r):n.add(r.getLineString())}},polygonize:function(){if(null!==this.polyList)return null;if(this.polyList=new I,null===this.graph)return null;this.dangles=this.graph.deleteDangles(),this.cutEdges=this.graph.deleteCutEdges();var t=this.graph.getEdgeRings(),e=new I;this.invalidRingLines=new I,this.isCheckingRingsValid?this.findValidRings(t,e,this.invalidRingLines):e=t,this.findShellsAndHoles(e),Tr.assignHolesToShells(this.holeList,this.shellList),ho.sort(this.shellList,new wr.EnvelopeComparator);var n=!0;this.extractOnlyPolygonal&&(Tr.findDisjointShells(this.shellList),n=!1),this.polyList=Tr.extractPolygons(this.shellList,n)},getDangles:function(){return this.polygonize(),this.dangles},getCutEdges:function(){return this.polygonize(),this.cutEdges},getPolygons:function(){return this.polygonize(),this.polyList},add:function(){if(R(arguments[0],v))for(var t=arguments[0],e=t.iterator();e.hasNext();){var n=e.next();this.add(n)}else if(arguments[0]instanceof St){var i=arguments[0];this.geomFactory=i.getFactory(),null===this.graph&&(this.graph=new Rr(this.geomFactory)),this.graph.addEdge(i)}else if(arguments[0]instanceof B){var r=arguments[0];r.apply(this.lineStringAdder)}},setCheckRingsValid:function(t){this.isCheckingRingsValid=t},findShellsAndHoles:function(t){this.holeList=new I,this.shellList=new I;for(var e=t.iterator();e.hasNext();){var n=e.next();n.computeHole(),n.isHole()?this.holeList.add(n):this.shellList.add(n)}},interfaces_:function(){return[]},getClass:function(){return Tr}}),Tr.findOuterShells=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next(),i=n.getOuterHole();null===i||i.isProcessed()||(n.setIncluded(!0),i.setProcessed(!0))}},Tr.extractPolygons=function(t,e){for(var n=new I,i=t.iterator();i.hasNext();){var r=i.next();(e||r.isIncluded())&&n.add(r.getPolygon())}return n},Tr.assignHolesToShells=function(t,e){for(var n=t.iterator();n.hasNext();){var i=n.next();Tr.assignHoleToShell(i,e)}},Tr.assignHoleToShell=function(t,e){var n=wr.findEdgeRingContaining(t,e);null!==n&&n.addHole(t)},Tr.findDisjointShells=function(t){Tr.findOuterShells(t);var e=null;do{e=!1;for(var n=t.iterator();n.hasNext();){var i=n.next();i.isIncludedSet()||(i.updateIncluded(),i.isIncludedSet()||(e=!0))}}while(e)},e(Pr.prototype,{filter:function(t){t instanceof St&&this.p.add(t)},interfaces_:function(){return[q]},getClass:function(){return Pr}}),Tr.LineStringAdder=Pr;var Ro=Object.freeze({Polygonizer:Tr});e(br.prototype,{createEdgeEndForNext:function(t,e,n,i){var r=n.segmentIndex+1;if(r>=t.getNumPoints()&&null===i)return null;var s=t.getCoordinate(r);null!==i&&i.segmentIndex===n.segmentIndex&&(s=i.coord);var o=new En(t,n.coord,s,new gn(t.getLabel()));e.add(o)},createEdgeEndForPrev:function(t,e,n,i){var r=n.segmentIndex;if(0===n.dist){if(0===r)return null;r--}var s=t.getCoordinate(r);null!==i&&i.segmentIndex>=r&&(s=i.coord);var o=new gn(t.getLabel());o.flip();var a=new En(t,n.coord,s,o);e.add(a)},computeEdgeEnds:function(){if(1===arguments.length){for(var t=arguments[0],e=new I,n=t;n.hasNext();){var i=n.next();this.computeEdgeEnds(i,e)}return e}if(2===arguments.length){var r=arguments[0],s=arguments[1],o=r.getEdgeIntersectionList();o.addEndpoints();var a=o.iterator(),u=null,l=null;if(!a.hasNext())return null;var h=a.next();do u=l,l=h,h=null,a.hasNext()&&(h=a.next()),null!==l&&(this.createEdgeEndForPrev(r,s,l,u),this.createEdgeEndForNext(r,s,l,h));while(null!==l)}},interfaces_:function(){return[]},getClass:function(){return br}}),h(Or,En),e(Or.prototype,{insert:function(t){this.edgeEnds.add(t)},print:function(t){t.println(\"EdgeEndBundle--> Label: \"+this.label);for(var e=this.iterator();e.hasNext();){var n=e.next();n.print(t),t.println()}},iterator:function(){return this.edgeEnds.iterator()},getEdgeEnds:function(){return this.edgeEnds},computeLabelOn:function(t,e){for(var n=0,i=!1,r=this.iterator();r.hasNext();){var s=r.next(),o=s.getLabel().getLocation(t);o===L.BOUNDARY&&n++,o===L.INTERIOR&&(i=!0)}var o=L.NONE;i&&(o=L.INTERIOR),n>0&&(o=$n.determineBoundary(e,n)),this.label.setLocation(t,o)},computeLabelSide:function(t,e){for(var n=this.iterator();n.hasNext();){var i=n.next();if(i.getLabel().isArea()){var r=i.getLabel().getLocation(t,e);if(r===L.INTERIOR)return this.label.setLocation(t,e,L.INTERIOR),null;r===L.EXTERIOR&&this.label.setLocation(t,e,L.EXTERIOR)}}},getLabel:function(){return this.label},computeLabelSides:function(t){this.computeLabelSide(t,cn.LEFT),this.computeLabelSide(t,cn.RIGHT)},updateIM:function(t){Jn.updateIM(this.label,t)},computeLabel:function(t){for(var e=!1,n=this.iterator();n.hasNext();){var i=n.next();i.getLabel().isArea()&&(e=!0)}e?this.label=new gn(L.NONE,L.NONE,L.NONE):this.label=new gn(L.NONE);for(var r=0;2>r;r++)this.computeLabelOn(r,t),e&&this.computeLabelSides(r)},interfaces_:function(){return[]},getClass:function(){return Or}}),h(_r,Pn),e(_r.prototype,{updateIM:function(t){for(var e=this.iterator();e.hasNext();){var n=e.next();n.updateIM(t)}},insert:function(t){var e=this.edgeMap.get(t);null===e?(e=new Or(t),this.insertEdgeEnd(t,e)):e.insert(t)},interfaces_:function(){return[]},getClass:function(){return _r}}),h(Mr,yn),e(Mr.prototype,{updateIMFromEdges:function(t){this.edges.updateIM(t)},computeIM:function(t){t.setAtLeastIfValid(this.label.getLocation(0),this.label.getLocation(1),0)},interfaces_:function(){return[]},getClass:function(){return Mr}}),h(Dr,Nn),e(Dr.prototype,{createNode:function(t){return new Mr(t,new _r)},interfaces_:function(){return[]},getClass:function(){return Dr}}),e(Ar.prototype,{insertEdgeEnds:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();this.nodes.add(n)}},computeProperIntersectionIM:function(t,e){var n=this.arg[0].getGeometry().getDimension(),i=this.arg[1].getGeometry().getDimension(),r=t.hasProperIntersection(),s=t.hasProperInteriorIntersection();2===n&&2===i?r&&e.setAtLeast(\"212101212\"):2===n&&1===i?(r&&e.setAtLeast(\"FFF0FFFF2\"),s&&e.setAtLeast(\"1FFFFF1FF\")):1===n&&2===i?(r&&e.setAtLeast(\"F0FFFFFF2\"),s&&e.setAtLeast(\"1F1FFFFFF\")):1===n&&1===i&&s&&e.setAtLeast(\"0FFFFFFFF\")},labelIsolatedEdges:function(t,e){for(var n=this.arg[t].getEdgeIterator();n.hasNext();){var i=n.next();i.isIsolated()&&(this.labelIsolatedEdge(i,e,this.arg[e].getGeometry()),this.isolatedEdges.add(i))}},labelIsolatedEdge:function(t,e,n){if(n.getDimension()>0){var i=this.ptLocator.locate(t.getCoordinate(),n);t.getLabel().setAllLocations(e,i)}else t.getLabel().setAllLocations(e,L.EXTERIOR)},computeIM:function(){var t=new fe;if(t.set(L.EXTERIOR,L.EXTERIOR,2),!this.arg[0].getGeometry().getEnvelopeInternal().intersects(this.arg[1].getGeometry().getEnvelopeInternal()))return this.computeDisjointIM(t),t;this.arg[0].computeSelfNodes(this.li,!1),this.arg[1].computeSelfNodes(this.li,!1);var e=this.arg[0].computeEdgeIntersections(this.arg[1],this.li,!1);this.computeIntersectionNodes(0),this.computeIntersectionNodes(1),this.copyNodesAndLabels(0),this.copyNodesAndLabels(1),this.labelIsolatedNodes(),this.computeProperIntersectionIM(e,t);var n=new br,i=n.computeEdgeEnds(this.arg[0].getEdgeIterator());this.insertEdgeEnds(i);var r=n.computeEdgeEnds(this.arg[1].getEdgeIterator());return this.insertEdgeEnds(r),this.labelNodeEdges(),this.labelIsolatedEdges(0,1),this.labelIsolatedEdges(1,0),this.updateIM(t),t},labelNodeEdges:function(){for(var t=this.nodes.iterator();t.hasNext();){var e=t.next();e.getEdges().computeLabelling(this.arg)}},copyNodesAndLabels:function(t){for(var e=this.arg[t].getNodeIterator();e.hasNext();){var n=e.next(),i=this.nodes.addNode(n.getCoordinate());i.setLabel(t,n.getLabel().getLocation(t))}},labelIntersectionNodes:function(t){for(var e=this.arg[t].getEdgeIterator();e.hasNext();)for(var n=e.next(),i=n.getLabel().getLocation(t),r=n.getEdgeIntersectionList().iterator();r.hasNext();){var s=r.next(),o=this.nodes.find(s.coord);o.getLabel().isNull(t)&&(i===L.BOUNDARY?o.setLabelBoundary(t):o.setLabel(t,L.INTERIOR))}},labelIsolatedNode:function(t,e){var n=this.ptLocator.locate(t.getCoordinate(),this.arg[e].getGeometry());t.getLabel().setAllLocations(e,n)},computeIntersectionNodes:function(t){for(var e=this.arg[t].getEdgeIterator();e.hasNext();)for(var n=e.next(),i=n.getLabel().getLocation(t),r=n.getEdgeIntersectionList().iterator();r.hasNext();){var s=r.next(),o=this.nodes.addNode(s.coord);i===L.BOUNDARY?o.setLabelBoundary(t):o.getLabel().isNull(t)&&o.setLabel(t,L.INTERIOR)}},labelIsolatedNodes:function(){for(var t=this.nodes.iterator();t.hasNext();){var e=t.next(),n=e.getLabel();f.isTrue(n.getGeometryCount()>0,\"node with empty label found\"),e.isIsolated()&&(n.isNull(0)?this.labelIsolatedNode(e,0):this.labelIsolatedNode(e,1))}},updateIM:function(t){for(var e=this.isolatedEdges.iterator();e.hasNext();){var n=e.next();n.updateIM(t)}for(var i=this.nodes.iterator();i.hasNext();){var r=i.next();r.updateIM(t),r.updateIMFromEdges(t)}},computeDisjointIM:function(t){var e=this.arg[0].getGeometry();e.isEmpty()||(t.set(L.INTERIOR,L.EXTERIOR,e.getDimension()),t.set(L.BOUNDARY,L.EXTERIOR,e.getBoundaryDimension()));var n=this.arg[1].getGeometry();n.isEmpty()||(t.set(L.EXTERIOR,L.INTERIOR,n.getDimension()),t.set(L.EXTERIOR,L.BOUNDARY,n.getBoundaryDimension()))},interfaces_:function(){return[]},getClass:function(){return Ar}}),e(Fr.prototype,{isContainedInBoundary:function(t){if(t instanceof Tt)return!1;if(t instanceof Lt)return this.isPointContainedInBoundary(t);if(t instanceof St)return this.isLineStringContainedInBoundary(t);for(var e=0;e0){var i=t;t=e,e=i}var r=!1;return e.y>t.y&&(r=!0),r?this.li.computeIntersection(t,e,this.diagDown0,this.diagDown1):this.li.computeIntersection(t,e,this.diagUp0,this.diagUp1),!!this.li.hasIntersection()},interfaces_:function(){return[]},getClass:function(){return Gr}}),e(qr.prototype,{applyTo:function(t){for(var e=0;e=this.rectEnv.getMinX()&&e.getMaxX()<=this.rectEnv.getMaxX()?(this._intersects=!0,null):e.getMinY()>=this.rectEnv.getMinY()&&e.getMaxY()<=this.rectEnv.getMaxY()?(this._intersects=!0,null):void 0:null},intersects:function(){return this._intersects},interfaces_:function(){return[]},getClass:function(){return zr}}),h(Vr,qr),e(Vr.prototype,{isDone:function(){return this._containsPoint===!0},visit:function(t){if(!(t instanceof Tt))return null;var e=t.getEnvelopeInternal();if(!this.rectEnv.intersects(e))return null;for(var n=new g,i=0;4>i;i++)if(this.rectSeq.getCoordinate(i,n),e.contains(n)&&Tn.containsPointInPolygon(n,t))return this._containsPoint=!0,null},containsPoint:function(){return this._containsPoint},interfaces_:function(){return[]},getClass:function(){return Vr}}),h(kr,qr),e(kr.prototype,{intersects:function(){return this.hasIntersection},isDone:function(){return this.hasIntersection===!0},visit:function(t){var e=t.getEnvelopeInternal();if(!this.rectEnv.intersects(e))return null;var n=kn.getLines(t);this.checkIntersectionWithLineStrings(n)},checkIntersectionWithLineStrings:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();if(this.checkIntersectionWithSegments(n),this.hasIntersection)return null}},checkIntersectionWithSegments:function(t){for(var e=t.getCoordinateSequence(),n=1;n=i-n){var r=Wr.getGeometry(e,n);return this.unionSafe(r,null)}if(i-n===2)return this.unionSafe(Wr.getGeometry(e,n),Wr.getGeometry(e,n+1));var s=Math.trunc((i+n)/2),r=this.binaryUnion(e,n,s),o=this.binaryUnion(e,s,i);return this.unionSafe(r,o)}},repeatedUnion:function(t){for(var e=null,n=t.iterator();n.hasNext();){var i=n.next();e=null===e?i.copy():e.union(i)}return e},unionSafe:function(t,e){return null===t&&null===e?null:null===t?e.copy():null===e?t.copy():this.unionOptimized(t,e)},unionActual:function(t,e){return Wr.restrictToPolygons(t.union(e))},unionTree:function(t){var e=this.reduceToGeometries(t),n=this.binaryUnion(e);return n},unionUsingEnvelopeIntersection:function(t,e,n){var i=new I,r=this.extractByEnvelope(n,t,i),s=this.extractByEnvelope(n,e,i),o=this.unionActual(r,s);i.add(o);var a=Ur.combine(i);return a},bufferUnion:function(){if(1===arguments.length){var t=arguments[0],e=t.get(0).getFactory(),n=e.buildGeometry(t),i=n.buffer(0);return i}if(2===arguments.length){var r=arguments[0],s=arguments[1],e=r.getFactory(),n=e.createGeometryCollection([r,s]),i=n.buffer(0);return i}},interfaces_:function(){return[]},getClass:function(){return Wr}}),Wr.restrictToPolygons=function(t){if(R(t,Rt))return t;var e=or.getPolygons(t);return 1===e.size()?e.get(0):t.getFactory().createMultiPolygon(ie.toPolygonArray(e))},Wr.getGeometry=function(t,e){return e>=t.size()?null:t.get(e)},Wr.union=function(t){var e=new Wr(t);return e.union()},Wr.STRTREE_NODE_CAPACITY=4,e(jr.prototype,{unionNoOpt:function(t){var e=this.geomFact.createPoint();return si.overlayOp(t,e,ii.UNION)},unionWithNull:function(t,e){return null===t&&null===e?null:null===e?t:null===t?e:t.union(e)},extract:function(){if(R(arguments[0],v))for(var t=arguments[0],e=t.iterator();e.hasNext();){var n=e.next();this.extract(n)}else if(arguments[0]instanceof B){var i=arguments[0];null===this.geomFact&&(this.geomFact=i.getFactory()),Hr.extract(i,B.SORTINDEX_POLYGON,this.polygons),Hr.extract(i,B.SORTINDEX_LINESTRING,this.lines),Hr.extract(i,B.SORTINDEX_POINT,this.points)}},union:function t(){if(null===this.geomFact)return null;var e=null;if(this.points.size()>0){var n=this.geomFact.buildGeometry(this.points);e=this.unionNoOpt(n)}var i=null;if(this.lines.size()>0){var r=this.geomFact.buildGeometry(this.lines);i=this.unionNoOpt(r)}var s=null;this.polygons.size()>0&&(s=Wr.union(this.polygons));var o=this.unionWithNull(i,s),t=null;return t=null===e?o:null===o?e:Xr.union(e,o),null===t?this.geomFact.createGeometryCollection():t},interfaces_:function(){return[]},getClass:function(){return jr}}),jr.union=function(){if(1===arguments.length){if(R(arguments[0],v)){var t=arguments[0],e=new jr(t);return e.union()}if(arguments[0]instanceof B){var n=arguments[0],e=new jr(n);return e.union()}}else if(2===arguments.length){var i=arguments[0],r=arguments[1],e=new jr(i,r);return e.union()}};var Po=Object.freeze({UnaryUnionOp:jr});e(Kr.prototype,{visitInteriorRing:function(t,e){var n=t.getCoordinates(),i=n[0],r=Kr.findDifferentPoint(n,i),s=e.findEdgeInSameDirection(i,r),o=e.findEdgeEnd(s),a=null;o.getLabel().getLocation(0,cn.RIGHT)===L.INTERIOR?a=o:o.getSym().getLabel().getLocation(0,cn.RIGHT)===L.INTERIOR&&(a=o.getSym()),f.isTrue(null!==a,\"unable to find dirEdge with Interior on RHS\"),this.visitLinkedDirectedEdges(a)},visitShellInteriors:function(t,e){if(t instanceof Tt){var n=t;this.visitInteriorRing(n.getExteriorRing(),e)}if(t instanceof Ot)for(var i=t,r=0;rt;t++)if(null!==this.subnode[t])return!0;return!1},isPrunable:function(){return!(this.hasChildren()||this.hasItems())},addAllItems:function(t){t.addAll(this.items);for(var e=0;2>e;e++)null!==this.subnode[e]&&this.subnode[e].addAllItems(t);return t},size:function(){for(var t=0,e=0;2>e;e++)null!==this.subnode[e]&&(t+=this.subnode[e].size());return t+this.items.size()},addAllItemsFromOverlapping:function(t,e){return null===t||this.isSearchMatch(t)?(e.addAll(this.items),null!==this.subnode[0]&&this.subnode[0].addAllItemsFromOverlapping(t,e),void(null!==this.subnode[1]&&this.subnode[1].addAllItemsFromOverlapping(t,e))):null},hasItems:function(){return!this.items.isEmpty()},remove:function(t,e){if(!this.isSearchMatch(t))return!1;for(var n=!1,i=0;2>i;i++)if(null!==this.subnode[i]&&(n=this.subnode[i].remove(t,e))){this.subnode[i].isPrunable()&&(this.subnode[i]=null);break}return n?n:n=this.items.remove(e)},getItems:function(){return this.items},depth:function(){for(var t=0,e=0;2>e;e++)if(null!==this.subnode[e]){var n=this.subnode[e].depth();n>t&&(t=n)}return t+1},nodeSize:function(){for(var t=0,e=0;2>e;e++)null!==this.subnode[e]&&(t+=this.subnode[e].nodeSize());return t+1},add:function(t){this.items.add(t)},interfaces_:function(){return[]},getClass:function(){return Zr}}),Zr.getSubnodeIndex=function(t,e){var n=-1;return t.min>=e&&(n=1),t.max<=e&&(n=0),n},e(Qr.prototype,{expandToInclude:function(t){t.max>this.max&&(this.max=t.max),t.minn||this.max=this.min&&e<=this.max}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return n>=this.min&&i<=this.max}},init:function(t,e){this.min=t,this.max=e,t>e&&(this.min=e,this.max=t)},getMax:function(){return this.max},interfaces_:function(){return[]},getClass:function(){return Qr}}),e(Jr.prototype,{getInterval:function(){return this.interval},getLevel:function(){return this.level},computeKey:function(t){for(this.level=Jr.computeLevel(t),this.interval=new Qr,this.computeInterval(this.level,t);!this.interval.contains(t);)this.level+=1,this.computeInterval(this.level,t)},computeInterval:function(t,e){var n=Ci.powerOf2(t);this.pt=Math.floor(e.getMin()/n)*n,this.interval.init(this.pt,this.pt+n)},getPoint:function(){return this.pt},interfaces_:function(){return[]},getClass:function(){return Jr}}),Jr.computeLevel=function(t){var e=t.getWidth(),n=Ci.exponent(e)+1;return n},h($r,Zr),e($r.prototype,{getInterval:function(){return this.interval},find:function(t){var e=Zr.getSubnodeIndex(t,this.centre);if(-1===e)return this;if(null!==this.subnode[e]){var n=this.subnode[e];return n.find(t)}return this},insert:function(t){f.isTrue(null===this.interval||this.interval.contains(t.interval));var e=Zr.getSubnodeIndex(t.interval,this.centre);if(t.level===this.level-1)this.subnode[e]=t;else{var n=this.createSubnode(e);n.insert(t),this.subnode[e]=n}},isSearchMatch:function(t){return t.overlaps(this.interval)},getSubnode:function(t){return null===this.subnode[t]&&(this.subnode[t]=this.createSubnode(t)),this.subnode[t]},getNode:function(t){var e=Zr.getSubnodeIndex(t,this.centre);if(-1!==e){var n=this.getSubnode(e);return n.getNode(t)}return this},createSubnode:function(t){var e=0,n=0;switch(t){case 0:e=this.interval.getMin(),n=this.centre;break;case 1:e=this.centre,n=this.interval.getMax()}var i=new Qr(e,n),r=new $r(i,this.level-1);return r},interfaces_:function(){return[]},getClass:function(){return $r}}),$r.createNode=function(t){var e=new Jr(t),n=new $r(e.getInterval(),e.getLevel());return n},$r.createExpanded=function(t,e){var n=new Qr(e);null!==t&&n.expandToInclude(t.interval);var i=$r.createNode(n);return null!==t&&i.insert(t),i},h(ts,Zr),e(ts.prototype,{insert:function(t,e){var n=Zr.getSubnodeIndex(t,ts.origin);if(-1===n)return this.add(e),null;var i=this.subnode[n];if(null===i||!i.getInterval().contains(t)){var r=$r.createExpanded(i,t);this.subnode[n]=r}this.insertContained(this.subnode[n],t,e)},isSearchMatch:function(t){return!0},insertContained:function(t,e,n){f.isTrue(t.getInterval().contains(e));var i=Ri.isZeroWidth(e.getMin(),e.getMax()),r=null;r=i?t.find(e):t.getNode(e),r.add(n)},interfaces_:function(){return[]},getClass:function(){return ts}}),ts.origin=0,e(es.prototype,{size:function(){return null!==this.root?this.root.size():0},insert:function(t,e){this.collectStats(t);var n=es.ensureExtent(t,this.minExtent);this.root.insert(n,e)},query:function(){if(1===arguments.length){if(\"number\"==typeof arguments[0]){var t=arguments[0];return this.query(new Qr(t,t))}if(arguments[0]instanceof Qr){var e=arguments[0],n=new I;return this.query(e,n),n}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.root.addAllItemsFromOverlapping(i,r)}},iterator:function(){var t=new I;return this.root.addAllItems(t),t.iterator()},remove:function(t,e){var n=es.ensureExtent(t,this.minExtent);return this.root.remove(n,e)},collectStats:function(t){var e=t.getWidth();e0&&(this.minExtent=e)},depth:function(){return null!==this.root?this.root.depth():0},nodeSize:function(){return null!==this.root?this.root.nodeSize():0},interfaces_:function(){return[]},getClass:function(){return es}}),es.ensureExtent=function(t,e){var n=t.getMin(),i=t.getMax();return n!==i?t:(n===i&&(n-=e/2,i=n+e/2),new Qr(n,i))},e(ns.prototype,{isInside:function(t){},interfaces_:function(){return[]},getClass:function(){return ns}}),e(is.prototype,{testLineSegment:function(t,e){var n=null,i=null,r=null,s=null,o=null,a=e.p0,u=e.p1;i=a.x-t.x,r=a.y-t.y,s=u.x-t.x,o=u.y-t.y,(r>0&&0>=o||o>0&&0>=r)&&(n=ue.signOfDet2x2(i,r,s,o)/(o-r),n>0&&this.crossings++)},buildIndex:function(){this.tree=new es;for(var t=H.removeRepeatedPoints(this.ring.getCoordinates()),e=$e.getChains(t),n=0;n1)return this.invalidPoint=i.getEdge().getCoordinate(0),!0}return!1},isNodeConsistentArea:function(){var t=this.geomGraph.computeSelfNodes(this.li,!0,!0);return t.hasProperIntersection()?(this.invalidPoint=t.getProperIntersectionPoint(),!1):(this.nodeGraph.build(this.geomGraph),this.isNodeEdgeAreaLabelsConsistent())},interfaces_:function(){return[]},getClass:function(){return os}}),e(as.prototype,{buildIndex:function(){this.index=new ke;for(var t=0;t=1&&(e=t.getCoordinateN(0)),this.validErr=new us(us.RING_NOT_CLOSED,e)}},checkShellsNotNested:function(t,e){for(var n=0;n=2&&(i=!0);var r=e.edit(t,new hs(this.targetPM,i));return r},changePM:function(t,e){var n=this.createEditor(t.getFactory(),e);return n.edit(t,new _t.NoOpGeometryOperation)},setRemoveCollapsedComponents:function(t){this.removeCollapsed=t},createFactory:function(t,e){var n=new ie(e,t.getSRID(),t.getCoordinateSequenceFactory());return n},setChangePrecisionModel:function(t){this.changePrecisionModel=t},reduce:function(t){var e=this.reducePointwise(t);return this.isPointwise?e:R(e,Rt)?e.isValid()?e:this.fixPolygonalTopology(e):e},setPointwise:function(t){this.isPointwise=t},createEditor:function(t,e){if(t.getPrecisionModel()===e)return new _t;var n=this.createFactory(t,e),i=new _t(n);return i},interfaces_:function(){return[]},getClass:function(){return cs}}),cs.reduce=function(t,e){var n=new cs(e);return n.reduce(t)},cs.reducePointwise=function(t,e){var n=new cs(e);return n.setPointwise(!0),n.reduce(t)};var _o=Object.freeze({GeometryPrecisionReducer:cs});e(fs.prototype,{simplifySection:function(t,e){if(t+1===e)return null;this.seg.p0=this.pts[t],this.seg.p1=this.pts[e];for(var n=-1,i=t,r=t+1;e>r;r++){var s=this.seg.distance(this.pts[r]);s>n&&(n=s,i=r)}if(n<=this.distanceTolerance)for(var r=t+1;e>r;r++)this.usePt[r]=!1;else this.simplifySection(t,i),this.simplifySection(i,e)},setDistanceTolerance:function(t){this.distanceTolerance=t},simplify:function(){this.usePt=new Array(this.pts.length).fill(null);for(var t=0;tt)throw new i(\"Tolerance must be non-negative\");this.distanceTolerance=t},interfaces_:function(){return[]},getClass:function(){return gs}}),gs.simplify=function(t,e){var n=new gs(t);return n.setDistanceTolerance(e),n.getResultGeometry()},h(ds,xe),e(ds.prototype,{transformPolygon:function(t,e){if(t.isEmpty())return null;var n=xe.prototype.transformPolygon.call(this,t,e);return e instanceof Ot?n:this.createValidArea(n)},createValidArea:function(t){return this.isEnsureValidTopology?t.buffer(0):t},transformCoordinates:function(t,e){var n=t.toCoordinateArray(),i=null;return i=0===n.length?new Array(0).fill(null):fs.simplify(n,this.distanceTolerance),this.factory.getCoordinateSequenceFactory().create(i)},transformMultiPolygon:function(t,e){var n=xe.prototype.transformMultiPolygon.call(this,t,e);return this.createValidArea(n)},transformLinearRing:function(t,e){var n=e instanceof Tt,i=xe.prototype.transformLinearRing.call(this,t,e);return!n||i instanceof bt?i:null},interfaces_:function(){return[]},getClass:function(){return ds}}),gs.DPTransformer=ds,h(ps,ce),e(ps.prototype,{getIndex:function(){return this.index},getParent:function(){return this.parent},interfaces_:function(){return[]},getClass:function(){return ps}}),e(vs.prototype,{addToResult:function(t){this.resultSegs.add(t)},asLineString:function(){return this.parentLine.getFactory().createLineString(vs.extractCoordinates(this.resultSegs))},getResultSize:function(){var t=this.resultSegs.size();return 0===t?0:t+1},getParent:function(){return this.parentLine},getSegment:function(t){return this.segs[t]},getParentCoordinates:function(){return this.parentLine.getCoordinates()},getMinimumSize:function(){return this.minimumSize},asLinearRing:function(){return this.parentLine.getFactory().createLinearRing(vs.extractCoordinates(this.resultSegs))},getSegments:function(){return this.segs},init:function(){var t=this.parentLine.getCoordinates();this.segs=new Array(t.length-1).fill(null);for(var e=0;ethis.distanceTolerance&&(s=!1);var l=new ce;if(l.p0=this.linePts[t],l.p1=this.linePts[e],i[0]=t,i[1]=e,this.hasBadIntersection(this.line,i,l)&&(s=!1),s){var r=this.flatten(t,e);return this.line.addToResult(r),null}this.simplifySection(t,u,n),this.simplifySection(u,e,n)},hasBadOutputIntersection:function(t){for(var e=this.outputIndex.query(t),n=e.iterator();n.hasNext();){var i=n.next();if(this.hasInteriorIntersection(i,t))return!0}return!1},findFurthestPoint:function(t,e,n,i){var r=new ce;r.p0=t[e],r.p1=t[n];for(var s=-1,o=e,a=e+1;n>a;a++){var u=t[a],l=r.distance(u);l>s&&(s=l,o=a)}return i[0]=s,o},simplify:function(t){this.line=t,this.linePts=t.getParentCoordinates(),this.simplifySection(0,this.linePts.length-1,0)},remove:function(t,e,n){for(var i=e;n>i;i++){var r=t.getSegment(i);this.inputIndex.remove(r)}},hasInteriorIntersection:function(t,e){return this.li.computeIntersection(t.p0,t.p1,e.p0,e.p1),this.li.isInteriorIntersection()},hasBadInputIntersection:function(t,e,n){for(var i=this.inputIndex.query(n),r=i.iterator();r.hasNext();){var s=r.next();if(this.hasInteriorIntersection(s,n)){if(xs.isInLineSection(t,e,s))continue;return!0}}return!1},interfaces_:function(){return[]},getClass:function(){return xs}}),xs.isInLineSection=function(t,e,n){if(n.getParent()!==t.getParent())return!1;var i=n.getIndex();return i>=e[0]&&it)throw new i(\"Tolerance must be non-negative\");this.lineSimplifier.setDistanceTolerance(t)},interfaces_:function(){return[]},getClass:function(){return Is}}),Is.simplify=function(t,e){var n=new Is(t);return n.setDistanceTolerance(e),n.getResultGeometry()},h(Ns,xe),e(Ns.prototype,{transformCoordinates:function(t,e){if(0===t.size())return null;if(e instanceof St){var n=this.linestringMap.get(e);return this.createCoordinateSequence(n.getResultCoordinates())}return xe.prototype.transformCoordinates.call(this,t,e)},interfaces_:function(){return[]},getClass:function(){return Ns}}),e(Cs.prototype,{filter:function(t){if(t instanceof St){var e=t;if(e.isEmpty())return null;var n=e.isClosed()?4:2,i=new vs(e,n);this.tps.linestringMap.put(e,i)}},interfaces_:function(){return[q]},getClass:function(){return Cs}}),Is.LineStringTransformer=Ns,Is.LineStringMapBuilderFilter=Cs;var Mo=Object.freeze({DouglasPeuckerSimplifier:gs,TopologyPreservingSimplifier:Is});e(Ss.prototype,{splitAt:function(){if(1===arguments.length){var t=arguments[0],e=this.minimumLen/this.segLen;if(t.distance(this.seg.p0)r&&(u=r),s.setMinimumLength(u),s.splitAt(o),s.getSplitPoint()},interfaces_:function(){return[ws]},getClass:function(){return Ls}}),Ls.projectedSplitPoint=function(t,e){var n=t.getLineSegment(),i=n.project(e);return i},e(Rs.prototype,{interfaces_:function(){return[]},getClass:function(){return Rs}}),Rs.triArea=function(t,e,n){return(e.x-t.x)*(n.y-t.y)-(e.y-t.y)*(n.x-t.x)},Rs.isInCircleDDNormalized=function(t,e,n,i){var r=_.valueOf(t.x).selfSubtract(i.x),s=_.valueOf(t.y).selfSubtract(i.y),o=_.valueOf(e.x).selfSubtract(i.x),a=_.valueOf(e.y).selfSubtract(i.y),u=_.valueOf(n.x).selfSubtract(i.x),l=_.valueOf(n.y).selfSubtract(i.y),h=r.multiply(a).selfSubtract(o.multiply(s)),c=o.multiply(l).selfSubtract(u.multiply(a)),f=u.multiply(s).selfSubtract(r.multiply(l)),g=r.multiply(r).selfAdd(s.multiply(s)),d=o.multiply(o).selfAdd(a.multiply(a)),p=u.multiply(u).selfAdd(l.multiply(l)),v=g.selfMultiply(c).selfAdd(d.selfMultiply(f)).selfAdd(p.selfMultiply(h)),m=v.doubleValue()>0;return m},Rs.checkRobustInCircle=function(t,e,n,i){var r=Rs.isInCircleNonRobust(t,e,n,i),s=Rs.isInCircleDDSlow(t,e,n,i),o=Rs.isInCircleCC(t,e,n,i),a=ci.circumcentre(t,e,n);A.out.println(\"p radius diff a = \"+Math.abs(i.distance(a)-t.distance(a))/t.distance(a)),r===s&&r===o||(A.out.println(\"inCircle robustness failure (double result = \"+r+\", DD result = \"+s+\", CC result = \"+o+\")\"),A.out.println(se.toLineString(new Gt([t,e,n,i]))),A.out.println(\"Circumcentre = \"+se.toPoint(a)+\" radius = \"+t.distance(a)),A.out.println(\"p radius diff a = \"+Math.abs(i.distance(a)/t.distance(a)-1)),A.out.println(\"p radius diff b = \"+Math.abs(i.distance(a)/e.distance(a)-1)),A.out.println(\"p radius diff c = \"+Math.abs(i.distance(a)/n.distance(a)-1)),A.out.println())},Rs.isInCircleDDFast=function(t,e,n,i){var r=_.sqr(t.x).selfAdd(_.sqr(t.y)).selfMultiply(Rs.triAreaDDFast(e,n,i)),s=_.sqr(e.x).selfAdd(_.sqr(e.y)).selfMultiply(Rs.triAreaDDFast(t,n,i)),o=_.sqr(n.x).selfAdd(_.sqr(n.y)).selfMultiply(Rs.triAreaDDFast(t,e,i)),a=_.sqr(i.x).selfAdd(_.sqr(i.y)).selfMultiply(Rs.triAreaDDFast(t,e,n)),u=r.selfSubtract(s).selfAdd(o).selfSubtract(a),l=u.doubleValue()>0;return l},Rs.isInCircleCC=function(t,e,n,i){var r=ci.circumcentre(t,e,n),s=t.distance(r),o=i.distance(r)-s;return 0>=o},Rs.isInCircleNormalized=function(t,e,n,i){var r=t.x-i.x,s=t.y-i.y,o=e.x-i.x,a=e.y-i.y,u=n.x-i.x,l=n.y-i.y,h=r*a-o*s,c=o*l-u*a,f=u*s-r*l,g=r*r+s*s,d=o*o+a*a,p=u*u+l*l,v=g*c+d*f+p*h;return v>0},Rs.isInCircleDDSlow=function(t,e,n,i){var r=_.valueOf(i.x),s=_.valueOf(i.y),o=_.valueOf(t.x),a=_.valueOf(t.y),u=_.valueOf(e.x),l=_.valueOf(e.y),h=_.valueOf(n.x),c=_.valueOf(n.y),f=o.multiply(o).add(a.multiply(a)).multiply(Rs.triAreaDDSlow(u,l,h,c,r,s)),g=u.multiply(u).add(l.multiply(l)).multiply(Rs.triAreaDDSlow(o,a,h,c,r,s)),d=h.multiply(h).add(c.multiply(c)).multiply(Rs.triAreaDDSlow(o,a,u,l,r,s)),p=r.multiply(r).add(s.multiply(s)).multiply(Rs.triAreaDDSlow(o,a,u,l,h,c)),v=f.subtract(g).add(d).subtract(p),m=v.doubleValue()>0;\nreturn m},Rs.isInCircleNonRobust=function(t,e,n,i){var r=(t.x*t.x+t.y*t.y)*Rs.triArea(e,n,i)-(e.x*e.x+e.y*e.y)*Rs.triArea(t,n,i)+(n.x*n.x+n.y*n.y)*Rs.triArea(t,e,i)-(i.x*i.x+i.y*i.y)*Rs.triArea(t,e,n)>0;return r},Rs.isInCircleRobust=function(t,e,n,i){return Rs.isInCircleNormalized(t,e,n,i)},Rs.triAreaDDSlow=function(t,e,n,i,r,s){return n.subtract(t).multiply(s.subtract(e)).subtract(i.subtract(e).multiply(r.subtract(t)))},Rs.triAreaDDFast=function(t,e,n){var i=_.valueOf(e.x).selfSubtract(t.x).selfMultiply(_.valueOf(n.y).selfSubtract(t.y)),r=_.valueOf(e.y).selfSubtract(t.y).selfMultiply(_.valueOf(n.x).selfSubtract(t.x));return i.selfSubtract(r)},e(Ts.prototype,{circleCenter:function(t,e){var n=new Ts(this.getX(),this.getY()),i=this.bisector(n,t),r=this.bisector(t,e),s=new F(i,r),o=null;try{o=new Ts(s.getX(),s.getY())}catch(i){if(!(i instanceof w))throw i;A.err.println(\"a: \"+n+\" b: \"+t+\" c: \"+e),A.err.println(i)}finally{}return o},dot:function(t){return this.p.x*t.getX()+this.p.y*t.getY()},magn:function(){return Math.sqrt(this.p.x*this.p.x+this.p.y*this.p.y)},getZ:function(){return this.p.z},bisector:function(t,e){var n=e.getX()-t.getX(),i=e.getY()-t.getY(),r=new F(t.getX()+n/2,t.getY()+i/2,1),s=new F(t.getX()-i+n/2,t.getY()+n+i/2,1);return new F(r,s)},equals:function(){if(1===arguments.length){var t=arguments[0];return this.p.x===t.getX()&&this.p.y===t.getY()}if(2===arguments.length){var e=arguments[0],n=arguments[1];return this.p.distance(e.getCoordinate())0},getX:function(){return this.p.x},crossProduct:function(t){return this.p.x*t.getY()-this.p.y*t.getX()},setZ:function(t){this.p.z=t},times:function(t){return new Ts(t*this.p.x,t*this.p.y)},cross:function(){return new Ts(this.p.y,-this.p.x)},leftOf:function(t){return this.isCCW(t.orig(),t.dest())},toString:function(){return\"POINT (\"+this.p.x+\" \"+this.p.y+\")\"},sub:function(t){return new Ts(this.p.x-t.getX(),this.p.y-t.getY())},getY:function(){return this.p.y},classify:function(t,e){var n=this,i=e.sub(t),r=n.sub(t),s=i.crossProduct(r);return s>0?Ts.LEFT:0>s?Ts.RIGHT:i.getX()*r.getX()<0||i.getY()*r.getY()<0?Ts.BEHIND:i.magn()s&&(r=s),s=this.distance(e,this),r>s&&(r=s),i/r},interfaces_:function(){return[]},getClass:function(){return Ts}}),Ts.interpolateZ=function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=e.distance(n),r=t.distance(e),s=n.z-e.z,o=e.z+s*(r/i);return o}if(4===arguments.length){var a=arguments[0],u=arguments[1],l=arguments[2],h=arguments[3],c=u.x,f=u.y,g=l.x-c,d=h.x-c,p=l.y-f,v=h.y-f,m=g*v-d*p,y=a.x-c,x=a.y-f,E=(v*y-d*x)/m,I=(-p*y+g*x)/m,N=u.z+E*(l.z-u.z)+I*(h.z-u.z);return N}},Ts.LEFT=0,Ts.RIGHT=1,Ts.BEYOND=2,Ts.BEHIND=3,Ts.BETWEEN=4,Ts.ORIGIN=5,Ts.DESTINATION=6,h(Ps,Ts),e(Ps.prototype,{getConstraint:function(){return this.constraint},setOnConstraint:function(t){this._isOnConstraint=t},merge:function(t){t._isOnConstraint&&(this._isOnConstraint=!0,this.constraint=t.constraint)},isOnConstraint:function(){return this._isOnConstraint},setConstraint:function(t){this._isOnConstraint=!0,this.constraint=t},interfaces_:function(){return[]},getClass:function(){return Ps}}),e(bs.prototype,{equalsNonOriented:function(t){return this.equalsOriented(t)?!0:!!this.equalsOriented(t.sym())},toLineSegment:function(){return new ce(this.vertex.getCoordinate(),this.dest().getCoordinate())},dest:function(){return this.sym().orig()},oNext:function(){return this.next},equalsOriented:function(t){return!(!this.orig().getCoordinate().equals2D(t.orig().getCoordinate())||!this.dest().getCoordinate().equals2D(t.dest().getCoordinate()))},dNext:function(){return this.sym().oNext().sym()},lPrev:function(){return this.next.sym()},rPrev:function(){return this.sym().oNext()},rot:function(){return this._rot},oPrev:function(){return this._rot.next._rot},sym:function(){return this._rot._rot},setOrig:function(t){this.vertex=t},lNext:function(){return this.invRot().oNext().rot()},getLength:function(){return this.orig().getCoordinate().distance(this.dest().getCoordinate())},invRot:function(){return this._rot.sym()},setDest:function(t){this.sym().setOrig(t)},setData:function(t){this.data=t},getData:function(){return this.data},delete:function(){this._rot=null},orig:function(){return this.vertex},rNext:function(){return this._rot.next.invRot()},toString:function(){var t=this.vertex.getCoordinate(),e=this.dest().getCoordinate();return se.toLineString(t,e)},isLive:function(){return null!==this._rot},getPrimary:function(){return this.orig().getCoordinate().compareTo(this.dest().getCoordinate())<=0?this:this.sym()},dPrev:function(){return this.invRot().oNext().invRot()},setNext:function(t){this.next=t},interfaces_:function(){return[]},getClass:function(){return bs}}),bs.makeEdge=function(t,e){var n=new bs,i=new bs,r=new bs,s=new bs;n._rot=i,i._rot=r,r._rot=s,s._rot=n,n.setNext(n),i.setNext(s),r.setNext(r),s.setNext(i);var o=n;return o.setOrig(t),o.setDest(e),o},bs.swap=function(t){var e=t.oPrev(),n=t.sym().oPrev();bs.splice(t,e),bs.splice(t.sym(),n),bs.splice(t,e.lNext()),bs.splice(t.sym(),n.lNext()),t.setOrig(e.dest()),t.setDest(n.dest())},bs.splice=function(t,e){var n=t.oNext().rot(),i=e.oNext().rot(),r=e.oNext(),s=t.oNext(),o=i.oNext(),a=n.oNext();t.setNext(r),e.setNext(s),n.setNext(o),i.setNext(a)},bs.connect=function(t,e){var n=bs.makeEdge(t.dest(),e.orig());return bs.splice(n,t.lNext()),bs.splice(n.sym(),e),n},e(Os.prototype,{insertSite:function(t){var e=this.subdiv.locate(t);if(this.subdiv.isVertexOfEdge(e,t))return e;this.subdiv.isOnEdge(e,t.getCoordinate())&&(e=e.oPrev(),this.subdiv.delete(e.oNext()));var n=this.subdiv.makeEdge(e.orig(),t);bs.splice(n,e);var i=n;do n=this.subdiv.connect(e,n.sym()),e=n.oPrev();while(e.lNext()!==i);for(;;){var r=e.oPrev();if(r.dest().rightOf(e)&&t.isInCircle(e.orig(),r.dest(),e.dest()))bs.swap(e),e=e.oPrev();else{if(e.oNext()===i)return n;e=e.oNext().lPrev()}}},insertSites:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();this.insertSite(n)}},interfaces_:function(){return[]},getClass:function(){return Os}}),e(_s.prototype,{locate:function(t){},interfaces_:function(){return[]},getClass:function(){return _s}}),e(Ms.prototype,{init:function(){this.lastEdge=this.findEdge()},locate:function(t){this.lastEdge.isLive()||this.init();var e=this.subdiv.locateFromEdge(t,this.lastEdge);return this.lastEdge=e,e},findEdge:function(){var t=this.subdiv.getEdges();return t.iterator().next()},interfaces_:function(){return[_s]},getClass:function(){return Ms}}),h(Ds,l),e(Ds.prototype,{getSegment:function(){return this.seg},interfaces_:function(){return[]},getClass:function(){return Ds}}),Ds.msgWithSpatial=function(t,e){return null!==e?t+\" [ \"+e+\" ]\":t},e(As.prototype,{visit:function(t){},interfaces_:function(){return[]},getClass:function(){return As}}),e(Fs.prototype,{getTriangleVertices:function(t){var e=new Bs;return this.visitTriangles(e,t),e.getTriangleVertices()},isFrameVertex:function(t){return t.equals(this.frameVertex[0])?!0:t.equals(this.frameVertex[1])?!0:!!t.equals(this.frameVertex[2])},isVertexOfEdge:function(t,e){return!(!e.equals(t.orig(),this.tolerance)&&!e.equals(t.dest(),this.tolerance))},connect:function(t,e){var n=bs.connect(t,e);return this.quadEdges.add(n),n},getVoronoiCellPolygon:function(t,e){var n=new I,i=t;do{var r=t.rot().orig().getCoordinate();n.add(r),t=t.oPrev()}while(t!==i);var s=new N;s.addAll(n,!1),s.closeRing(),s.size()<4&&(A.out.println(s),s.add(s.get(s.size()-1),!0));var o=s.toCoordinateArray(),a=e.createPolygon(e.createLinearRing(o),null),u=i.orig();return a.setUserData(u.getCoordinate()),a},setLocator:function(t){this.locator=t},initSubdiv:function(){var t=this.makeEdge(this.frameVertex[0],this.frameVertex[1]),e=this.makeEdge(this.frameVertex[1],this.frameVertex[2]);bs.splice(t.sym(),e);var n=this.makeEdge(this.frameVertex[2],this.frameVertex[0]);return bs.splice(e.sym(),n),bs.splice(n.sym(),t),t},isFrameBorderEdge:function(t){var e=new Array(3).fill(null);Fs.getTriangleEdges(t,e);var n=new Array(3).fill(null);Fs.getTriangleEdges(t.sym(),n);var i=t.lNext().dest();if(this.isFrameVertex(i))return!0;var r=t.sym().lNext().dest();return!!this.isFrameVertex(r)},makeEdge:function(t,e){var n=bs.makeEdge(t,e);return this.quadEdges.add(n),n},visitTriangles:function(t,e){this.visitedKey++;var n=new pe;n.push(this.startingEdge);for(var i=new J;!n.empty();){var r=n.pop();if(!i.contains(r)){var s=this.fetchTriangleToVisit(r,n,e,i);null!==s&&t.visit(s)}}},isFrameEdge:function(t){return!(!this.isFrameVertex(t.orig())&&!this.isFrameVertex(t.dest()))},isOnEdge:function(t,e){this.seg.setCoordinates(t.orig().getCoordinate(),t.dest().getCoordinate());var n=this.seg.distance(e);return nn?10*e:10*n,this.frameVertex[0]=new Ts((t.getMaxX()+t.getMinX())/2,t.getMaxY()+i),this.frameVertex[1]=new Ts(t.getMinX()-i,t.getMinY()-i),this.frameVertex[2]=new Ts(t.getMaxX()+i,t.getMinY()-i),this.frameEnv=new C(this.frameVertex[0].getCoordinate(),this.frameVertex[1].getCoordinate()),this.frameEnv.expandToInclude(this.frameVertex[2].getCoordinate())},getTriangleCoordinates:function(t){var e=new zs;return this.visitTriangles(e,t),e.getTriangles()},getVertices:function(t){for(var e=new J,n=this.quadEdges.iterator();n.hasNext();){var i=n.next(),r=i.orig();!t&&this.isFrameVertex(r)||e.add(r);var s=i.dest();!t&&this.isFrameVertex(s)||e.add(s)}return e},fetchTriangleToVisit:function(t,e,n,i){var r=t,s=0,o=!1;do{this.triEdges[s]=r,this.isFrameEdge(r)&&(o=!0);var a=r.sym();i.contains(a)||e.push(a),i.add(r),s++,r=r.lNext()}while(r!==t);return o&&!n?null:this.triEdges},getEdges:function(){if(0===arguments.length)return this.quadEdges;if(1===arguments.length){for(var t=arguments[0],e=this.getPrimaryEdges(!1),n=new Array(e.size()).fill(null),i=0,r=e.iterator();r.hasNext();){var s=r.next();n[i++]=t.createLineString([s.orig().getCoordinate(),s.dest().getCoordinate()])}return t.createMultiLineString(n)}},getVertexUniqueEdges:function(t){for(var e=new I,n=new J,i=this.quadEdges.iterator();i.hasNext();){var r=i.next(),s=r.orig();n.contains(s)||(n.add(s),!t&&this.isFrameVertex(s)||e.add(r));var o=r.sym(),a=o.orig();n.contains(a)||(n.add(a),!t&&this.isFrameVertex(a)||e.add(o))}return e},getTriangleEdges:function(t){var e=new qs;return this.visitTriangles(e,t),e.getTriangleEdges()},getPrimaryEdges:function(t){this.visitedKey++;var e=new I,n=new pe;n.push(this.startingEdge);for(var i=new J;!n.empty();){var r=n.pop();if(!i.contains(r)){var s=r.getPrimary();!t&&this.isFrameEdge(s)||e.add(s),n.push(r.oNext()),n.push(r.sym().oNext()),i.add(r),i.add(r.sym())}}return e},delete:function(t){bs.splice(t,t.oPrev()),bs.splice(t.sym(),t.sym().oPrev());var e=t.sym(),n=t.rot(),i=t.rot().sym();this.quadEdges.remove(t),this.quadEdges.remove(e),this.quadEdges.remove(n),this.quadEdges.remove(i),t.delete(),e.delete(),n.delete(),i.delete()},locateFromEdge:function(t,e){for(var n=0,i=this.quadEdges.size(),r=e;;){if(n++,n>i)throw new Ds(r.toLineSegment());if(t.equals(r.orig())||t.equals(r.dest()))break;if(t.rightOf(r))r=r.sym();else if(t.rightOf(r.oNext())){if(t.rightOf(r.dPrev()))break;r=r.dPrev()}else r=r.oNext()}return r},getTolerance:function(){return this.tolerance},getVoronoiCellPolygons:function(t){this.visitTriangles(new Gs,!0);for(var e=new I,n=this.getVertexUniqueEdges(!1),i=n.iterator();i.hasNext();){var r=i.next();e.add(this.getVoronoiCellPolygon(r,t))}return e},getVoronoiDiagram:function(t){var e=this.getVoronoiCellPolygons(t);return t.createGeometryCollection(ie.toGeometryArray(e))},getTriangles:function(t){for(var e=this.getTriangleCoordinates(!1),n=new Array(e.size()).fill(null),i=0,r=e.iterator();r.hasNext();){var s=r.next();n[i++]=t.createPolygon(t.createLinearRing(s),null)}return t.createGeometryCollection(n)},insertSite:function(t){var e=this.locate(t);if(t.equals(e.orig(),this.tolerance)||t.equals(e.dest(),this.tolerance))return e;var n=this.makeEdge(e.orig(),t);bs.splice(n,e);var i=n;do n=this.connect(e,n.sym()),e=n.oPrev();while(e.lNext()!==i);return i},locate:function(){if(1===arguments.length){if(arguments[0]instanceof Ts){var t=arguments[0];return this.locator.locate(t)}if(arguments[0]instanceof g){var e=arguments[0];return this.locator.locate(new Ts(e))}}else if(2===arguments.length){var n=arguments[0],i=arguments[1],r=this.locator.locate(new Ts(n));if(null===r)return null;var s=r;r.dest().getCoordinate().equals2D(n)&&(s=r.sym());var o=s;do{if(o.dest().getCoordinate().equals2D(i))return o;o=o.oNext()}while(o!==s);return null}},interfaces_:function(){return[]},getClass:function(){return Fs}}),Fs.getTriangleEdges=function(t,e){if(e[0]=t,e[1]=e[0].lNext(),e[2]=e[1].lNext(),e[2].lNext()!==e[0])throw new i(\"Edges do not form a triangle\")},e(Gs.prototype,{visit:function(t){for(var e=t[0].orig().getCoordinate(),n=t[1].orig().getCoordinate(),i=t[2].orig().getCoordinate(),r=ci.circumcentre(e,n,i),s=new Ts(r),o=0;3>o;o++)t[o].rot().setOrig(s)},interfaces_:function(){return[As]},getClass:function(){return Gs}}),e(qs.prototype,{getTriangleEdges:function(){return this.triList},visit:function(t){this.triList.add(t.clone())},interfaces_:function(){return[As]},getClass:function(){return qs}}),e(Bs.prototype,{visit:function(t){this.triList.add([t[0].orig(),t[1].orig(),t[2].orig()])},getTriangleVertices:function(){return this.triList},interfaces_:function(){return[As]},getClass:function(){return Bs}}),e(zs.prototype,{checkTriangleSize:function(t){var e=\"\";t.length>=2?e=se.toLineString(t[0],t[1]):t.length>=1&&(e=se.toPoint(t[0]))},visit:function(t){this.coordList.clear();for(var e=0;3>e;e++){var n=t[e].orig();this.coordList.add(n.getCoordinate())}if(this.coordList.size()>0){this.coordList.closeRing();var i=this.coordList.toCoordinateArray();if(4!==i.length)return null;this.triCoords.add(i)}},getTriangles:function(){return this.triCoords},interfaces_:function(){return[As]},getClass:function(){return zs}}),Fs.TriangleCircumcentreVisitor=Gs,Fs.TriangleEdgesListVisitor=qs,Fs.TriangleVertexListVisitor=Bs,Fs.TriangleCoordinatesVisitor=zs,Fs.EDGE_COINCIDENCE_TOL_FACTOR=1e3,e(Vs.prototype,{getLineSegment:function(){return this.ls},getEndZ:function(){var t=this.ls.getCoordinate(1);return t.z},getStartZ:function(){var t=this.ls.getCoordinate(0);return t.z},intersection:function(t){return this.ls.intersection(t.getLineSegment())},getStart:function(){return this.ls.getCoordinate(0)},getEnd:function(){return this.ls.getCoordinate(1)},getEndY:function(){var t=this.ls.getCoordinate(1);return t.y},getStartX:function(){var t=this.ls.getCoordinate(0);return t.x},equalsTopo:function(t){return this.ls.equalsTopo(t.getLineSegment())},getStartY:function(){var t=this.ls.getCoordinate(0);return t.y},setData:function(t){this.data=t},getData:function(){return this.data},getEndX:function(){var t=this.ls.getCoordinate(1);return t.x},toString:function(){return this.ls.toString()},interfaces_:function(){return[]},getClass:function(){return Vs}}),e(ks.prototype,{visit:function(t){},interfaces_:function(){return[]},getClass:function(){return ks}}),e(Ys.prototype,{isRepeated:function(){return this.count>1},getRight:function(){return this.right},getCoordinate:function(){return this.p},setLeft:function(t){this.left=t},getX:function(){return this.p.x},getData:function(){return this.data},getCount:function(){return this.count},getLeft:function(){return this.left},getY:function(){return this.p.y},increment:function(){this.count=this.count+1},setRight:function(t){this.right=t},interfaces_:function(){return[]},getClass:function(){return Ys}}),e(Us.prototype,{insert:function(){if(1===arguments.length){var t=arguments[0];return this.insert(t,null)}if(2===arguments.length){var e=arguments[0],n=arguments[1];if(null===this.root)return this.root=new Ys(e,n),this.root;if(this.tolerance>0){var i=this.findBestMatchNode(e);if(null!==i)return i.increment(),i}return this.insertExact(e,n)}},query:function(){var t=arguments,e=this;if(1===arguments.length){var n=arguments[0],i=new I;return this.query(n,i),i}if(2===arguments.length)if(arguments[0]instanceof C&&R(arguments[1],y))!function(){var n=t[0],i=t[1];e.queryNode(e.root,n,!0,{interfaces_:function(){return[ks]},visit:function(t){i.add(t)}})}();else if(arguments[0]instanceof C&&R(arguments[1],ks)){var r=arguments[0],s=arguments[1];this.queryNode(this.root,r,!0,s)}},queryNode:function(t,e,n,i){if(null===t)return null;var r=null,s=null,o=null;n?(r=e.getMinX(),s=e.getMaxX(),o=t.getX()):(r=e.getMinY(),s=e.getMaxY(),o=t.getY());var a=o>r,u=s>=o;a&&this.queryNode(t.getLeft(),e,!n,i),e.contains(t.getCoordinate())&&i.visit(t),u&&this.queryNode(t.getRight(),e,!n,i)},findBestMatchNode:function(t){var e=new Xs(t,this.tolerance);return this.query(e.queryEnvelope(),e),e.getNode()},isEmpty:function(){return null===this.root},insertExact:function(t,e){for(var n=this.root,i=this.root,r=!0,s=!0;null!==n;){if(null!==n){var o=t.distance(n.getCoordinate())<=this.tolerance;if(o)return n.increment(),n}s=r?t.xa;a++)i.add(s.getCoordinate(),!0);return i.toCoordinateArray()}},e(Xs.prototype,{visit:function(t){var e=this.p.distance(t.getCoordinate()),n=e<=this.tolerance;if(!n)return null;var i=!1;(null===this.matchNode||e0&&td){var p=d;(null===u||l>p)&&(u=f,l=p)}}}return u},getConstraintSegments:function(){return this.segments},setSplitPointFinder:function(t){this.splitFinder=t},getConvexHull:function(){return this.convexHull},getTolerance:function(){return this.tolerance},enforceGabriel:function(t){for(var e=new I,n=0,i=new I,r=t.iterator();r.hasNext();){var s=r.next(),o=this.findNonGabrielPoint(s);if(null!==o){this.splitPt=this.splitFinder.findSplitPoint(s,o);var a=this.createVertex(this.splitPt,s),u=(this.insertSite(a),new Vs(s.getStartX(),s.getStartY(),s.getStartZ(),a.getX(),a.getY(),a.getZ(),s.getData())),l=new Vs(a.getX(),a.getY(),a.getZ(),s.getEndX(),s.getEndY(),s.getEndZ(),s.getData());e.add(u),e.add(l),i.add(s),n+=1}}return t.removeAll(i),t.addAll(e),n},createVertex:function(){if(1===arguments.length){var t=arguments[0],e=null;return e=null!==this.vertexFactory?this.vertexFactory.createVertex(t,null):new Ps(t)}if(2===arguments.length){var n=arguments[0],i=arguments[1],e=null;return e=null!==this.vertexFactory?this.vertexFactory.createVertex(n,i):new Ps(n),e.setOnConstraint(!0),e}},getSubdivision:function(){return this.subdiv},computeBoundingBox:function(){var t=Hs.computeVertexEnvelope(this.initialVertices),e=Hs.computeVertexEnvelope(this.segVertices),n=new C(t);n.expandToInclude(e);var i=.2*n.getWidth(),r=.2*n.getHeight(),s=Math.max(i,r);this.computeAreaEnv=new C(n),this.computeAreaEnv.expandBy(s)},setVertexFactory:function(t){this.vertexFactory=t},formInitialDelaunay:function(){this.computeBoundingBox(),this.subdiv=new Fs(this.computeAreaEnv,this.tolerance),this.subdiv.setLocator(new Ms(this.subdiv)),this.incDel=new Os(this.subdiv),this.insertSites(this.initialVertices)},insertSite:function(){if(arguments[0]instanceof Ps){var t=arguments[0],e=this.kdt.insert(t.getCoordinate(),t);if(e.isRepeated()){var n=e.getData();return n.merge(t),n}return this.incDel.insertSite(t),t}if(arguments[0]instanceof g){var i=arguments[0];this.insertSite(this.createVertex(i))}},interfaces_:function(){return[]},getClass:function(){return Hs}}),Hs.computeVertexEnvelope=function(t){for(var e=new C,n=t.iterator();n.hasNext();){var i=n.next();e.expandToInclude(i.getCoordinate())}return e},Hs.MAX_SPLIT_ITER=99,e(Ws.prototype,{create:function(){if(null!==this.subdiv)return null;var t=Ws.envelope(this.siteCoords),e=Ws.toVertices(this.siteCoords);this.subdiv=new Fs(t,this.tolerance);var n=new Os(this.subdiv);n.insertSites(e)},setTolerance:function(t){this.tolerance=t},setSites:function(){if(arguments[0]instanceof B){var t=arguments[0];this.siteCoords=Ws.extractUniqueCoordinates(t)}else if(R(arguments[0],v)){var e=arguments[0];this.siteCoords=Ws.unique(H.toCoordinateArray(e))}},getEdges:function(t){return this.create(),this.subdiv.getEdges(t)},getSubdivision:function(){return this.create(),this.subdiv},getTriangles:function(t){return this.create(),this.subdiv.getTriangles(t)},interfaces_:function(){return[]},getClass:function(){return Ws}}),Ws.extractUniqueCoordinates=function(t){if(null===t)return new N;var e=t.getCoordinates();return Ws.unique(e)},Ws.envelope=function(t){for(var e=new C,n=t.iterator();n.hasNext();){var i=n.next();e.expandToInclude(i)}return e},Ws.unique=function(t){var e=H.copyDeep(t);ut.sort(e);var n=new N(e,!1);return n},Ws.toVertices=function(t){for(var e=new I,n=t.iterator();n.hasNext();){var i=n.next();e.add(new Ts(i))}return e},e(js.prototype,{createSiteVertices:function(t){for(var e=new I,n=t.iterator();n.hasNext();){var i=n.next();this.constraintVertexMap.containsKey(i)||e.add(new Ps(i))}return e},create:function(){if(null!==this.subdiv)return null;var t=Ws.envelope(this.siteCoords),e=new I;null!==this.constraintLines&&(t.expandToInclude(this.constraintLines.getEnvelopeInternal()),this.createVertices(this.constraintLines),e=js.createConstraintSegments(this.constraintLines));var n=this.createSiteVertices(this.siteCoords),i=new Hs(n,this.tolerance);i.setConstraints(e,new I(this.constraintVertexMap.values())),i.formInitialDelaunay(),i.enforceConstraints(),this.subdiv=i.getSubdivision()},setTolerance:function(t){this.tolerance=t},setConstraints:function(t){this.constraintLines=t},setSites:function(t){this.siteCoords=Ws.extractUniqueCoordinates(t)},getEdges:function(t){return this.create(),this.subdiv.getEdges(t)},getSubdivision:function(){return this.create(),this.subdiv},getTriangles:function(t){return this.create(),this.subdiv.getTriangles(t)},createVertices:function(t){for(var e=t.getCoordinates(),n=0;nn;n++)e[n]=arguments[n];return Yr.relate.apply(Yr,[this].concat(e))},getCentroid:function(){if(this.isEmpty())return this.factory.createPoint();var t=ge.getCentroid(this);return this.createPointFromInternalCoord(t,this)},getInteriorPoint:function(){if(this.isEmpty())return this.factory.createPoint();var t=null,e=this.getDimension();if(0===e){var n=new li(this);t=n.getInteriorPoint()}else if(1===e){var n=new ui(this);t=n.getInteriorPoint()}else{var n=new oi(this);t=n.getInteriorPoint()}return this.createPointFromInternalCoord(t,this)},symDifference:function(t){if(this.isEmpty()||t.isEmpty()){if(this.isEmpty()&&t.isEmpty())return ii.createEmptyResult(ii.SYMDIFFERENCE,this,t,this.factory);if(this.isEmpty())return t.copy();if(t.isEmpty())return this.copy()}return this.checkNotGeometryCollection(this),this.checkNotGeometryCollection(t),si.overlayOp(this,t,ii.SYMDIFFERENCE)},createPointFromInternalCoord:function(t,e){return e.getPrecisionModel().makePrecise(t),e.getFactory().createPoint(t)},toText:function(){var t=new se;return t.write(this)},toString:function(){this.toText()},contains:function(t){return Yr.contains(this,t)},difference:function(t){return this.isEmpty()?ii.createEmptyResult(ii.DIFFERENCE,this,t,this.factory):t.isEmpty()?this.copy():(this.checkNotGeometryCollection(this),this.checkNotGeometryCollection(t),si.overlayOp(this,t,ii.DIFFERENCE))},isSimple:function(){var t=new Gi(this);return t.isSimple()},isWithinDistance:function(t,e){var n=this.getEnvelopeInternal().distance(t.getEnvelopeInternal());return n>e?!1:hr.isWithinDistance(this,t,e)},distance:function(t){return hr.distance(this,t)},isEquivalentClass:function(t){return this.getClass()===t.getClass()}});var Ao=\"1.1.2 (248dab8)\";t.version=Ao,t.algorithm=co,t.densify=fo,t.dissolve=go,t.geom=lo,t.index=mo,t.io=Io,t.noding=No,t.operation=Oo,t.precision=_o,t.simplify=Mo,t.triangulate=Do});\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar doubleClickZoom = {\n enable: function enable(ctx) {\n setTimeout(function () {\n // First check we've got a map and some context.\n if (!ctx.map || !ctx.map.doubleClickZoom || !ctx._ctx || !ctx._ctx.store || !ctx._ctx.store.getInitialConfigValue) return;\n // Now check initial state wasn't false (we leave it disabled if so)\n if (!ctx._ctx.store.getInitialConfigValue(\"doubleClickZoom\")) return;\n ctx.map.doubleClickZoom.enable();\n }, 0);\n },\n disable: function disable(ctx) {\n setTimeout(function () {\n if (!ctx.map || !ctx.map.doubleClickZoom) return;\n // Always disable here, as it's necessary in some cases.\n ctx.map.doubleClickZoom.disable();\n }, 0);\n }\n};\n\nvar DrawRectangle = {\n // When the mode starts this function will be called.\n onSetup: function onSetup(opts) {\n var rectangle = this.newFeature({\n type: \"Feature\",\n properties: {},\n geometry: {\n type: \"Polygon\",\n coordinates: [[]]\n }\n });\n this.addFeature(rectangle);\n this.clearSelectedFeatures();\n doubleClickZoom.disable(this);\n this.updateUIClasses({ mouse: \"add\" });\n this.setActionableState({\n trash: true\n });\n return {\n rectangle: rectangle\n };\n },\n // support mobile taps\n onTap: function onTap(state, e) {\n // emulate 'move mouse' to update feature coords\n if (state.startPoint) this.onMouseMove(state, e);\n // emulate onClick\n this.onClick(state, e);\n },\n // Whenever a user clicks on the map, Draw will call `onClick`\n onClick: function onClick(state, e) {\n // if state.startPoint exist, means its second click\n //change to simple_select mode\n if (state.startPoint && state.startPoint[0] !== e.lngLat.lng && state.startPoint[1] !== e.lngLat.lat) {\n this.updateUIClasses({ mouse: \"pointer\" });\n state.endPoint = [e.lngLat.lng, e.lngLat.lat];\n this.changeMode(\"simple_select\", { featuresId: state.rectangle.id });\n }\n // on first click, save clicked point coords as starting for rectangle\n var startPoint = [e.lngLat.lng, e.lngLat.lat];\n state.startPoint = startPoint;\n },\n onMouseMove: function onMouseMove(state, e) {\n // if startPoint, update the feature coordinates, using the bounding box concept\n // we are simply using the startingPoint coordinates and the current Mouse Position\n // coordinates to calculate the bounding box on the fly, which will be our rectangle\n if (state.startPoint) {\n state.rectangle.updateCoordinate(\"0.0\", state.startPoint[0], state.startPoint[1]); //minX, minY - the starting point\n state.rectangle.updateCoordinate(\"0.1\", e.lngLat.lng, state.startPoint[1]); // maxX, minY\n state.rectangle.updateCoordinate(\"0.2\", e.lngLat.lng, e.lngLat.lat); // maxX, maxY\n state.rectangle.updateCoordinate(\"0.3\", state.startPoint[0], e.lngLat.lat); // minX,maxY\n state.rectangle.updateCoordinate(\"0.4\", state.startPoint[0], state.startPoint[1]); //minX,minY - ending point (equals to starting point)\n }\n },\n // Whenever a user clicks on a key while focused on the map, it will be sent here\n onKeyUp: function onKeyUp(state, e) {\n if (e.keyCode === 27) return this.changeMode(\"simple_select\");\n },\n onStop: function onStop(state) {\n doubleClickZoom.enable(this);\n this.updateUIClasses({ mouse: \"none\" });\n this.activateUIButton();\n\n // check to see if we've deleted this feature\n if (this.getFeature(state.rectangle.id) === undefined) return;\n\n //remove last added coordinate\n state.rectangle.removeCoordinate(\"0.4\");\n if (state.rectangle.isValid()) {\n this.map.fire(\"draw.create\", {\n features: [state.rectangle.toGeoJSON()]\n });\n } else {\n this.deleteFeature([state.rectangle.id], { silent: true });\n this.changeMode(\"simple_select\", {}, { silent: true });\n }\n },\n toDisplayFeatures: function toDisplayFeatures(state, geojson, display) {\n var isActivePolygon = geojson.properties.id === state.rectangle.id;\n geojson.properties.active = isActivePolygon ? \"true\" : \"false\";\n if (!isActivePolygon) return display(geojson);\n\n // Only render the rectangular polygon if it has the starting point\n if (!state.startPoint) return;\n return display(geojson);\n },\n onTrash: function onTrash(state) {\n this.deleteFeature([state.rectangle.id], { silent: true });\n this.changeMode(\"simple_select\");\n }\n};\n\nexports.default = DrawRectangle;","'use strict'\n\nmodule.exports = monotoneConvexHull2D\n\nvar orient = require('robust-orientation')[3]\n\nfunction monotoneConvexHull2D(points) {\n var n = points.length\n\n if(n < 3) {\n var result = new Array(n)\n for(var i=0; i 1 && orient(\n points[lower[m-2]], \n points[lower[m-1]], \n p) <= 0) {\n m -= 1\n lower.pop()\n }\n lower.push(idx)\n\n //Insert into upper list\n m = upper.length\n while(m > 1 && orient(\n points[upper[m-2]], \n points[upper[m-1]], \n p) >= 0) {\n m -= 1\n upper.pop()\n }\n upper.push(idx)\n }\n\n //Merge lists together\n var result = new Array(upper.length + lower.length - 2)\n var ptr = 0\n for(var i=0, nl=lower.length; i0; --j) {\n result[ptr++] = upper[j]\n }\n\n //Return result\n return result\n}","\"use strict\"\n\nvar twoProduct = require(\"two-product\")\nvar robustSum = require(\"robust-sum\")\nvar robustScale = require(\"robust-scale\")\nvar robustSubtract = require(\"robust-subtract\")\n\nvar NUM_EXPAND = 5\n\nvar EPSILON = 1.1102230246251565e-16\nvar ERRBOUND3 = (3.0 + 16.0 * EPSILON) * EPSILON\nvar ERRBOUND4 = (7.0 + 56.0 * EPSILON) * EPSILON\n\nfunction orientation_3(sum, prod, scale, sub) {\n return function orientation3Exact(m0, m1, m2) {\n var p = sum(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])))\n var n = sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0]))\n var d = sub(p, n)\n return d[d.length - 1]\n }\n}\n\nfunction orientation_4(sum, prod, scale, sub) {\n return function orientation4Exact(m0, m1, m2, m3) {\n var p = sum(sum(scale(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m1[2]), sum(scale(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), -m2[2]), scale(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m3[2]))), sum(scale(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m0[2]), sum(scale(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m1[2]), scale(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m3[2]))))\n var n = sum(sum(scale(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m0[2]), sum(scale(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m2[2]), scale(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m3[2]))), sum(scale(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m0[2]), sum(scale(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), -m1[2]), scale(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m2[2]))))\n var d = sub(p, n)\n return d[d.length - 1]\n }\n}\n\nfunction orientation_5(sum, prod, scale, sub) {\n return function orientation5Exact(m0, m1, m2, m3, m4) {\n var p = sum(sum(sum(scale(sum(scale(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m2[2]), sum(scale(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), -m3[2]), scale(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m4[2]))), m1[3]), sum(scale(sum(scale(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m1[2]), sum(scale(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m3[2]), scale(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m4[2]))), -m2[3]), scale(sum(scale(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m1[2]), sum(scale(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m2[2]), scale(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m4[2]))), m3[3]))), sum(scale(sum(scale(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m1[2]), sum(scale(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), -m2[2]), scale(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m3[2]))), -m4[3]), sum(scale(sum(scale(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m1[2]), sum(scale(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m3[2]), scale(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m4[2]))), m0[3]), scale(sum(scale(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m0[2]), sum(scale(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m3[2]), scale(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), m4[2]))), -m1[3])))), sum(sum(scale(sum(scale(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), m0[2]), sum(scale(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m1[2]), scale(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m4[2]))), m3[3]), sum(scale(sum(scale(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m0[2]), sum(scale(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m1[2]), scale(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m3[2]))), -m4[3]), scale(sum(scale(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m1[2]), sum(scale(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), -m2[2]), scale(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m3[2]))), m0[3]))), sum(scale(sum(scale(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m0[2]), sum(scale(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m2[2]), scale(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m3[2]))), -m1[3]), sum(scale(sum(scale(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m0[2]), sum(scale(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m1[2]), scale(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m3[2]))), m2[3]), scale(sum(scale(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m0[2]), sum(scale(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), -m1[2]), scale(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m2[2]))), -m3[3])))))\n var n = sum(sum(sum(scale(sum(scale(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m2[2]), sum(scale(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), -m3[2]), scale(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m4[2]))), m0[3]), scale(sum(scale(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m0[2]), sum(scale(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m3[2]), scale(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), m4[2]))), -m2[3])), sum(scale(sum(scale(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m0[2]), sum(scale(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m2[2]), scale(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m4[2]))), m3[3]), scale(sum(scale(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m0[2]), sum(scale(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m2[2]), scale(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m3[2]))), -m4[3]))), sum(sum(scale(sum(scale(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m1[2]), sum(scale(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m2[2]), scale(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m4[2]))), m0[3]), scale(sum(scale(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m0[2]), sum(scale(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m2[2]), scale(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m4[2]))), -m1[3])), sum(scale(sum(scale(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), m0[2]), sum(scale(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m1[2]), scale(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m4[2]))), m2[3]), scale(sum(scale(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m0[2]), sum(scale(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), -m1[2]), scale(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m2[2]))), -m4[3]))))\n var d = sub(p, n)\n return d[d.length - 1]\n }\n}\n\nfunction orientation(n) {\n var fn =\n n === 3 ? orientation_3 :\n n === 4 ? orientation_4 : orientation_5\n\n return fn(robustSum, twoProduct, robustScale, robustSubtract)\n}\n\nvar orientation3Exact = orientation(3)\nvar orientation4Exact = orientation(4)\n\nvar CACHED = [\n function orientation0() { return 0 },\n function orientation1() { return 0 },\n function orientation2(a, b) {\n return b[0] - a[0]\n },\n function orientation3(a, b, c) {\n var l = (a[1] - c[1]) * (b[0] - c[0])\n var r = (a[0] - c[0]) * (b[1] - c[1])\n var det = l - r\n var s\n if(l > 0) {\n if(r <= 0) {\n return det\n } else {\n s = l + r\n }\n } else if(l < 0) {\n if(r >= 0) {\n return det\n } else {\n s = -(l + r)\n }\n } else {\n return det\n }\n var tol = ERRBOUND3 * s\n if(det >= tol || det <= -tol) {\n return det\n }\n return orientation3Exact(a, b, c)\n },\n function orientation4(a,b,c,d) {\n var adx = a[0] - d[0]\n var bdx = b[0] - d[0]\n var cdx = c[0] - d[0]\n var ady = a[1] - d[1]\n var bdy = b[1] - d[1]\n var cdy = c[1] - d[1]\n var adz = a[2] - d[2]\n var bdz = b[2] - d[2]\n var cdz = c[2] - d[2]\n var bdxcdy = bdx * cdy\n var cdxbdy = cdx * bdy\n var cdxady = cdx * ady\n var adxcdy = adx * cdy\n var adxbdy = adx * bdy\n var bdxady = bdx * ady\n var det = adz * (bdxcdy - cdxbdy)\n + bdz * (cdxady - adxcdy)\n + cdz * (adxbdy - bdxady)\n var permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz)\n + (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz)\n + (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz)\n var tol = ERRBOUND4 * permanent\n if ((det > tol) || (-det > tol)) {\n return det\n }\n return orientation4Exact(a,b,c,d)\n }\n]\n\nfunction slowOrient(args) {\n var proc = CACHED[args.length]\n if(!proc) {\n proc = CACHED[args.length] = orientation(args.length)\n }\n return proc.apply(undefined, args)\n}\n\nfunction proc (slow, o0, o1, o2, o3, o4, o5) {\n return function getOrientation(a0, a1, a2, a3, a4) {\n switch (arguments.length) {\n case 0:\n case 1:\n return 0;\n case 2:\n return o2(a0, a1)\n case 3:\n return o3(a0, a1, a2)\n case 4:\n return o4(a0, a1, a2, a3)\n case 5:\n return o5(a0, a1, a2, a3, a4)\n }\n\n var s = new Array(arguments.length)\n for (var i = 0; i < arguments.length; ++i) {\n s[i] = arguments[i]\n }\n return slow(s)\n }\n}\n\nfunction generateOrientationProc() {\n while(CACHED.length <= NUM_EXPAND) {\n CACHED.push(orientation(CACHED.length))\n }\n module.exports = proc.apply(undefined, [slowOrient].concat(CACHED))\n for(var i=0; i<=NUM_EXPAND; ++i) {\n module.exports[i] = CACHED[i]\n }\n}\n\ngenerateOrientationProc()","\"use strict\"\n\nvar twoProduct = require(\"two-product\")\nvar twoSum = require(\"two-sum\")\n\nmodule.exports = scaleLinearExpansion\n\nfunction scaleLinearExpansion(e, scale) {\n var n = e.length\n if(n === 1) {\n var ts = twoProduct(e[0], scale)\n if(ts[0]) {\n return ts\n }\n return [ ts[1] ]\n }\n var g = new Array(2 * n)\n var q = [0.1, 0.1]\n var t = [0.1, 0.1]\n var count = 0\n twoProduct(e[0], scale, q)\n if(q[0]) {\n g[count++] = q[0]\n }\n for(var i=1; i= nf)) {\n a = ei\n eptr += 1\n if(eptr < ne) {\n ei = e[eptr]\n ea = abs(ei)\n }\n } else {\n a = fi\n fptr += 1\n if(fptr < nf) {\n fi = -f[fptr]\n fa = abs(fi)\n }\n }\n var x = a + b\n var bv = x - a\n var y = b - bv\n var q0 = y\n var q1 = x\n var _x, _bv, _av, _br, _ar\n while(eptr < ne && fptr < nf) {\n if(ea < fa) {\n a = ei\n eptr += 1\n if(eptr < ne) {\n ei = e[eptr]\n ea = abs(ei)\n }\n } else {\n a = fi\n fptr += 1\n if(fptr < nf) {\n fi = -f[fptr]\n fa = abs(fi)\n }\n }\n b = q0\n x = a + b\n bv = x - a\n y = b - bv\n if(y) {\n g[count++] = y\n }\n _x = q1 + x\n _bv = _x - q1\n _av = _x - _bv\n _br = x - _bv\n _ar = q1 - _av\n q0 = _ar + _br\n q1 = _x\n }\n while(eptr < ne) {\n a = ei\n b = q0\n x = a + b\n bv = x - a\n y = b - bv\n if(y) {\n g[count++] = y\n }\n _x = q1 + x\n _bv = _x - q1\n _av = _x - _bv\n _br = x - _bv\n _ar = q1 - _av\n q0 = _ar + _br\n q1 = _x\n eptr += 1\n if(eptr < ne) {\n ei = e[eptr]\n }\n }\n while(fptr < nf) {\n a = fi\n b = q0\n x = a + b\n bv = x - a\n y = b - bv\n if(y) {\n g[count++] = y\n } \n _x = q1 + x\n _bv = _x - q1\n _av = _x - _bv\n _br = x - _bv\n _ar = q1 - _av\n q0 = _ar + _br\n q1 = _x\n fptr += 1\n if(fptr < nf) {\n fi = -f[fptr]\n }\n }\n if(q0) {\n g[count++] = q0\n }\n if(q1) {\n g[count++] = q1\n }\n if(!count) {\n g[count++] = 0.0 \n }\n g.length = count\n return g\n}","\"use strict\"\n\nmodule.exports = linearExpansionSum\n\n//Easy case: Add two scalars\nfunction scalarScalar(a, b) {\n var x = a + b\n var bv = x - a\n var av = x - bv\n var br = b - bv\n var ar = a - av\n var y = ar + br\n if(y) {\n return [y, x]\n }\n return [x]\n}\n\nfunction linearExpansionSum(e, f) {\n var ne = e.length|0\n var nf = f.length|0\n if(ne === 1 && nf === 1) {\n return scalarScalar(e[0], f[0])\n }\n var n = ne + nf\n var g = new Array(n)\n var count = 0\n var eptr = 0\n var fptr = 0\n var abs = Math.abs\n var ei = e[eptr]\n var ea = abs(ei)\n var fi = f[fptr]\n var fa = abs(fi)\n var a, b\n if(ea < fa) {\n b = ei\n eptr += 1\n if(eptr < ne) {\n ei = e[eptr]\n ea = abs(ei)\n }\n } else {\n b = fi\n fptr += 1\n if(fptr < nf) {\n fi = f[fptr]\n fa = abs(fi)\n }\n }\n if((eptr < ne && ea < fa) || (fptr >= nf)) {\n a = ei\n eptr += 1\n if(eptr < ne) {\n ei = e[eptr]\n ea = abs(ei)\n }\n } else {\n a = fi\n fptr += 1\n if(fptr < nf) {\n fi = f[fptr]\n fa = abs(fi)\n }\n }\n var x = a + b\n var bv = x - a\n var y = b - bv\n var q0 = y\n var q1 = x\n var _x, _bv, _av, _br, _ar\n while(eptr < ne && fptr < nf) {\n if(ea < fa) {\n a = ei\n eptr += 1\n if(eptr < ne) {\n ei = e[eptr]\n ea = abs(ei)\n }\n } else {\n a = fi\n fptr += 1\n if(fptr < nf) {\n fi = f[fptr]\n fa = abs(fi)\n }\n }\n b = q0\n x = a + b\n bv = x - a\n y = b - bv\n if(y) {\n g[count++] = y\n }\n _x = q1 + x\n _bv = _x - q1\n _av = _x - _bv\n _br = x - _bv\n _ar = q1 - _av\n q0 = _ar + _br\n q1 = _x\n }\n while(eptr < ne) {\n a = ei\n b = q0\n x = a + b\n bv = x - a\n y = b - bv\n if(y) {\n g[count++] = y\n }\n _x = q1 + x\n _bv = _x - q1\n _av = _x - _bv\n _br = x - _bv\n _ar = q1 - _av\n q0 = _ar + _br\n q1 = _x\n eptr += 1\n if(eptr < ne) {\n ei = e[eptr]\n }\n }\n while(fptr < nf) {\n a = fi\n b = q0\n x = a + b\n bv = x - a\n y = b - bv\n if(y) {\n g[count++] = y\n } \n _x = q1 + x\n _bv = _x - q1\n _av = _x - _bv\n _br = x - _bv\n _ar = q1 - _av\n q0 = _ar + _br\n q1 = _x\n fptr += 1\n if(fptr < nf) {\n fi = f[fptr]\n }\n }\n if(q0) {\n g[count++] = q0\n }\n if(q1) {\n g[count++] = q1\n }\n if(!count) {\n g[count++] = 0.0 \n }\n g.length = count\n return g\n}","\"use strict\"; \"use restrict\";\n\nvar bits = require(\"bit-twiddle\")\n , UnionFind = require(\"union-find\")\n\n//Returns the dimension of a cell complex\nfunction dimension(cells) {\n var d = 0\n , max = Math.max\n for(var i=0, il=cells.length; i> 1\n , s = compareCells(cells[mid], c)\n if(s <= 0) {\n if(s === 0) {\n r = mid\n }\n lo = mid + 1\n } else if(s > 0) {\n hi = mid - 1\n }\n }\n return r\n}\nexports.findCell = findCell;\n\n//Builds an index for an n-cell. This is more general than dual, but less efficient\nfunction incidence(from_cells, to_cells) {\n var index = new Array(from_cells.length)\n for(var i=0, il=index.length; i= from_cells.length || compareCells(from_cells[idx], b) !== 0) {\n break\n }\n }\n }\n }\n return index\n}\nexports.incidence = incidence\n\n//Computes the dual of the mesh. This is basically an optimized version of buildIndex for the situation where from_cells is just the list of vertices\nfunction dual(cells, vertex_count) {\n if(!vertex_count) {\n return incidence(unique(skeleton(cells, 0)), cells, 0)\n }\n var res = new Array(vertex_count)\n for(var i=0; i>> k) & 1) {\n b.push(c[k])\n }\n }\n result.push(b)\n }\n }\n return normalize(result)\n}\nexports.explode = explode\n\n//Enumerates all of the n-cells of a cell complex\nfunction skeleton(cells, n) {\n if(n < 0) {\n return []\n }\n var result = []\n , k0 = (1<<(n+1))-1\n for(var i=0; i 1) {\n x = p2.x;\n y = p2.y;\n\n } else if (t > 0) {\n x += dx * t;\n y += dy * t;\n }\n }\n\n dx = p.x - x;\n dy = p.y - y;\n\n return dx * dx + dy * dy;\n}\n// rest of the code doesn't care about point format\n\n// basic distance-based simplification\nfunction simplifyRadialDist(points, sqTolerance) {\n\n var prevPoint = points[0],\n newPoints = [prevPoint],\n point;\n\n for (var i = 1, len = points.length; i < len; i++) {\n point = points[i];\n\n if (getSqDist(point, prevPoint) > sqTolerance) {\n newPoints.push(point);\n prevPoint = point;\n }\n }\n\n if (prevPoint !== point) newPoints.push(point);\n\n return newPoints;\n}\n\nfunction simplifyDPStep(points, first, last, sqTolerance, simplified) {\n var maxSqDist = sqTolerance,\n index;\n\n for (var i = first + 1; i < last; i++) {\n var sqDist = getSqSegDist(points[i], points[first], points[last]);\n\n if (sqDist > maxSqDist) {\n index = i;\n maxSqDist = sqDist;\n }\n }\n\n if (maxSqDist > sqTolerance) {\n if (index - first > 1) simplifyDPStep(points, first, index, sqTolerance, simplified);\n simplified.push(points[index]);\n if (last - index > 1) simplifyDPStep(points, index, last, sqTolerance, simplified);\n }\n}\n\n// simplification using Ramer-Douglas-Peucker algorithm\nfunction simplifyDouglasPeucker(points, sqTolerance) {\n var last = points.length - 1;\n\n var simplified = [points[0]];\n simplifyDPStep(points, 0, last, sqTolerance, simplified);\n simplified.push(points[last]);\n\n return simplified;\n}\n\n// both algorithms combined for awesome performance\nfunction simplify(points, tolerance, highestQuality) {\n\n if (points.length <= 2) return points;\n\n var sqTolerance = tolerance !== undefined ? tolerance * tolerance : 1;\n\n points = highestQuality ? points : simplifyRadialDist(points, sqTolerance);\n points = simplifyDouglasPeucker(points, sqTolerance);\n\n return points;\n}\n\n// export as AMD module / Node module / browser or worker variable\nif (typeof define === 'function' && define.amd) define(function() { return simplify; });\nelse if (typeof module !== 'undefined') {\n module.exports = simplify;\n module.exports.default = simplify;\n} else if (typeof self !== 'undefined') self.simplify = simplify;\nelse window.simplify = simplify;\n\n})();\n","var measureDistance = require('turf-distance');\nvar point = require('turf-helpers').point;\nvar bearing = require('turf-bearing');\nvar destination = require('turf-destination');\n\n/**\n * Takes a {@link LineString|line} and returns a {@link Point|point} at a specified distance along the line.\n *\n * @name along\n * @param {Feature} line input line\n * @param {number} distance distance along the line\n * @param {String} [units=miles] can be degrees, radians, miles, or kilometers\n * @return {Feature} Point `distance` `units` along the line\n * @example\n * var line = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"LineString\",\n * \"coordinates\": [\n * [-77.031669, 38.878605],\n * [-77.029609, 38.881946],\n * [-77.020339, 38.884084],\n * [-77.025661, 38.885821],\n * [-77.021884, 38.889563],\n * [-77.019824, 38.892368]\n * ]\n * }\n * };\n *\n * var along = turf.along(line, 1, 'miles');\n *\n * var result = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [line, along]\n * };\n *\n * //=result\n */\nmodule.exports = function (line, distance, units) {\n var coords;\n if (line.type === 'Feature') coords = line.geometry.coordinates;\n else if (line.type === 'LineString') coords = line.coordinates;\n else throw new Error('input must be a LineString Feature or Geometry');\n\n var travelled = 0;\n for (var i = 0; i < coords.length; i++) {\n if (distance >= travelled && i === coords.length - 1) break;\n else if (travelled >= distance) {\n var overshot = distance - travelled;\n if (!overshot) return point(coords[i]);\n else {\n var direction = bearing(coords[i], coords[i - 1]) - 180;\n var interpolated = destination(coords[i], overshot, direction, units);\n return interpolated;\n }\n } else {\n travelled += measureDistance(coords[i], coords[i + 1], units);\n }\n }\n return point(coords[coords.length - 1]);\n};\n","var geometryArea = require('geojson-area').geometry;\n\n/**\n * Takes a one or more features and returns their area\n * in square meters.\n *\n * @param {(Feature|FeatureCollection)} input input features\n * @return {Number} area in square meters\n * @example\n * var polygons = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [\n * {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [[\n * [-67.031021, 10.458102],\n * [-67.031021, 10.53372],\n * [-66.929397, 10.53372],\n * [-66.929397, 10.458102],\n * [-67.031021, 10.458102]\n * ]]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [[\n * [-66.919784, 10.397325],\n * [-66.919784, 10.513467],\n * [-66.805114, 10.513467],\n * [-66.805114, 10.397325],\n * [-66.919784, 10.397325]\n * ]]\n * }\n * }\n * ]\n * };\n *\n * var area = turf.area(polygons);\n *\n * //=area\n */\nfunction area(input) {\n if (input.type === 'FeatureCollection') {\n for (var i = 0, sum = 0; i < input.features.length; i++) {\n if (input.features[i].geometry) {\n sum += geometryArea(input.features[i].geometry);\n }\n }\n return sum;\n } else if (input.type === 'Feature') {\n return geometryArea(input.geometry);\n } else {\n return geometryArea(input);\n }\n}\nmodule.exports = area;\n","var polygon = require('turf-helpers').polygon;\n\n/**\n * Takes a bbox and returns an equivalent {@link Polygon|polygon}.\n *\n * @name bboxPolygon\n * @param {Array} bbox an Array of bounding box coordinates in the form: ```[xLow, yLow, xHigh, yHigh]```\n * @return {Feature} a Polygon representation of the bounding box\n * @example\n * var bbox = [0, 0, 10, 10];\n *\n * var poly = turf.bboxPolygon(bbox);\n *\n * //=poly\n */\n\nmodule.exports = function (bbox) {\n var lowLeft = [bbox[0], bbox[1]];\n var topLeft = [bbox[0], bbox[3]];\n var topRight = [bbox[2], bbox[3]];\n var lowRight = [bbox[2], bbox[1]];\n\n return polygon([[\n lowLeft,\n lowRight,\n topRight,\n topLeft,\n lowLeft\n ]]);\n};\n","var each = require('turf-meta').coordEach;\n\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {(Feature|FeatureCollection)} geojson input features\n * @return {Array} the bounding box of `input` given\n * as an array in WSEN order (west, south, east, north)\n * @example\n * var input = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [\n * {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [114.175329, 22.2524]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [114.170007, 22.267969]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [114.200649, 22.274641]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [114.186744, 22.265745]\n * }\n * }\n * ]\n * };\n *\n * var bbox = turf.bbox(input);\n *\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * var resultFeatures = input.features.concat(bboxPolygon);\n * var result = {\n * \"type\": \"FeatureCollection\",\n * \"features\": resultFeatures\n * };\n *\n * //=result\n */\nmodule.exports = function (geojson) {\n var bbox = [Infinity, Infinity, -Infinity, -Infinity];\n each(geojson, function (coord) {\n if (bbox[0] > coord[0]) bbox[0] = coord[0];\n if (bbox[1] > coord[1]) bbox[1] = coord[1];\n if (bbox[2] < coord[0]) bbox[2] = coord[0];\n if (bbox[3] < coord[1]) bbox[3] = coord[1];\n });\n return bbox;\n};\n","var getCoord = require('turf-invariant').getCoord;\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n\n/**\n * Takes two {@link Point|points} and finds the geographic bearing between them.\n *\n * @name bearing\n * @param {Feature} start starting Point\n * @param {Feature} end ending Point\n * @returns {Number} bearing in decimal degrees\n * @example\n * var point1 = {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"marker-color\": '#f00'\n * },\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-75.343, 39.984]\n * }\n * };\n * var point2 = {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"marker-color\": '#0f0'\n * },\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-75.534, 39.123]\n * }\n * };\n *\n * var points = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [point1, point2]\n * };\n *\n * //=points\n *\n * var bearing = turf.bearing(point1, point2);\n *\n * //=bearing\n */\nmodule.exports = function (start, end) {\n var degrees2radians = Math.PI / 180;\n var radians2degrees = 180 / Math.PI;\n var coordinates1 = getCoord(start);\n var coordinates2 = getCoord(end);\n\n var lon1 = degrees2radians * coordinates1[0];\n var lon2 = degrees2radians * coordinates2[0];\n var lat1 = degrees2radians * coordinates1[1];\n var lat2 = degrees2radians * coordinates2[1];\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) -\n Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n\n var bearing = radians2degrees * Math.atan2(a, b);\n\n return bearing;\n};\n","var linestring = require('turf-helpers').lineString;\nvar Spline = require('./spline.js');\n\n/**\n * Takes a {@link LineString|line} and returns a curved version\n * by applying a [Bezier spline](http://en.wikipedia.org/wiki/B%C3%A9zier_spline)\n * algorithm.\n *\n * The bezier spline implementation is by [Leszek Rybicki](http://leszek.rybicki.cc/).\n *\n * @name bezier\n * @param {Feature} line input LineString\n * @param {Number} [resolution=10000] time in milliseconds between points\n * @param {Number} [sharpness=0.85] a measure of how curvy the path should be between splines\n * @returns {Feature} curved line\n * @example\n * var line = {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"stroke\": \"#f00\"\n * },\n * \"geometry\": {\n * \"type\": \"LineString\",\n * \"coordinates\": [\n * [-76.091308, 18.427501],\n * [-76.695556, 18.729501],\n * [-76.552734, 19.40443],\n * [-74.61914, 19.134789],\n * [-73.652343, 20.07657],\n * [-73.157958, 20.210656]\n * ]\n * }\n * };\n *\n * var curved = turf.bezier(line);\n * curved.properties = { stroke: '#0f0' };\n *\n * var result = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [line, curved]\n * };\n *\n * //=result\n */\nmodule.exports = function (line, resolution, sharpness) {\n var lineOut = linestring([]);\n\n lineOut.properties = line.properties;\n\n var spline = new Spline({\n points: line.geometry.coordinates.map(function (pt) {\n return {x: pt[0], y: pt[1]};\n }),\n duration: resolution,\n sharpness: sharpness\n });\n\n for (var i = 0; i < spline.duration; i += 10) {\n var pos = spline.pos(i);\n if (Math.floor(i / 100) % 2 === 0) {\n lineOut.geometry.coordinates.push([pos.x, pos.y]);\n }\n }\n\n return lineOut;\n};\n","/* eslint-disable */\n\n /**\n * BezierSpline\n * https://github.com/leszekr/bezier-spline-js\n *\n * @private\n * @copyright\n * Copyright (c) 2013 Leszek Rybicki\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 Spline = function (options) {\n this.points = options.points || [];\n this.duration = options.duration || 10000;\n this.sharpness = options.sharpness || 0.85;\n this.centers = [];\n this.controls = [];\n this.stepLength = options.stepLength || 60;\n this.length = this.points.length;\n this.delay = 0;\n // this is to ensure compatibility with the 2d version\n for (var i = 0; i < this.length; i++) this.points[i].z = this.points[i].z || 0;\n for (var i = 0; i < this.length - 1; i++) {\n var p1 = this.points[i];\n var p2 = this.points[i + 1];\n this.centers.push({\n x: (p1.x + p2.x) / 2,\n y: (p1.y + p2.y) / 2,\n z: (p1.z + p2.z) / 2\n });\n }\n this.controls.push([this.points[0], this.points[0]]);\n for (var i = 0; i < this.centers.length - 1; i++) {\n var p1 = this.centers[i];\n var p2 = this.centers[i + 1];\n var dx = this.points[i + 1].x - (this.centers[i].x + this.centers[i + 1].x) / 2;\n var dy = this.points[i + 1].y - (this.centers[i].y + this.centers[i + 1].y) / 2;\n var dz = this.points[i + 1].z - (this.centers[i].y + this.centers[i + 1].z) / 2;\n this.controls.push([{\n x: (1.0 - this.sharpness) * this.points[i + 1].x + this.sharpness * (this.centers[i].x + dx),\n y: (1.0 - this.sharpness) * this.points[i + 1].y + this.sharpness * (this.centers[i].y + dy),\n z: (1.0 - this.sharpness) * this.points[i + 1].z + this.sharpness * (this.centers[i].z + dz)},\n {\n x: (1.0 - this.sharpness) * this.points[i + 1].x + this.sharpness * (this.centers[i + 1].x + dx),\n y: (1.0 - this.sharpness) * this.points[i + 1].y + this.sharpness * (this.centers[i + 1].y + dy),\n z: (1.0 - this.sharpness) * this.points[i + 1].z + this.sharpness * (this.centers[i + 1].z + dz)}]);\n }\n this.controls.push([this.points[this.length - 1], this.points[this.length - 1]]);\n this.steps = this.cacheSteps(this.stepLength);\n return this;\n};\n\n /*\n Caches an array of equidistant (more or less) points on the curve.\n */\nSpline.prototype.cacheSteps = function (mindist) {\n var steps = [];\n var laststep = this.pos(0);\n steps.push(0);\n for (var t = 0; t < this.duration; t += 10) {\n var step = this.pos(t);\n var dist = Math.sqrt((step.x - laststep.x) * (step.x - laststep.x) + (step.y - laststep.y) * (step.y - laststep.y) + (step.z - laststep.z) * (step.z - laststep.z));\n if (dist > mindist) {\n steps.push(t);\n laststep = step;\n }\n }\n return steps;\n};\n\n /*\n returns angle and speed in the given point in the curve\n */\nSpline.prototype.vector = function (t) {\n var p1 = this.pos(t + 10);\n var p2 = this.pos(t - 10);\n return {\n angle:180 * Math.atan2(p1.y - p2.y, p1.x - p2.x) / 3.14,\n speed:Math.sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y) + (p2.z - p1.z) * (p2.z - p1.z))\n };\n};\n\n /*\n Gets the position of the point, given time.\n\n WARNING: The speed is not constant. The time it takes between control points is constant.\n\n For constant speed, use Spline.steps[i];\n */\nSpline.prototype.pos = function (time) {\n\n function bezier(t, p1, c1, c2, p2) {\n var B = function (t) {\n var t2 = t * t, t3 = t2 * t;\n return [(t3), (3 * t2 * (1 - t)), (3 * t * (1 - t) * (1 - t)), ((1 - t) * (1 - t) * (1 - t))];\n };\n var b = B(t);\n var pos = {\n x : p2.x * b[0] + c2.x * b[1] + c1.x * b[2] + p1.x * b[3],\n y : p2.y * b[0] + c2.y * b[1] + c1.y * b[2] + p1.y * b[3],\n z : p2.z * b[0] + c2.z * b[1] + c1.z * b[2] + p1.z * b[3]\n };\n return pos;\n }\n var t = time - this.delay;\n if (t < 0) t = 0;\n if (t > this.duration) t = this.duration - 1;\n //t = t-this.delay;\n var t2 = (t) / this.duration;\n if (t2 >= 1) return this.points[this.length - 1];\n\n var n = Math.floor((this.points.length - 1) * t2);\n var t1 = (this.length - 1) * t2 - n;\n return bezier(t1, this.points[n], this.controls[n][1], this.controls[n + 1][0], this.points[n + 1]);\n};\n\nmodule.exports = Spline;\n","// http://stackoverflow.com/questions/839899/how-do-i-calculate-a-point-on-a-circles-circumference\n// radians = degrees * (pi/180)\n// https://github.com/bjornharrtell/jsts/blob/master/examples/buffer.html\n\nvar helpers = require('turf-helpers');\nvar featureCollection = helpers.featureCollection;\nvar jsts = require('jsts');\nvar normalize = require('geojson-normalize');\n\n/**\n * Calculates a buffer for input features for a given radius. Units supported are miles, kilometers, and degrees.\n *\n * @name buffer\n * @param {(Feature|FeatureCollection)} feature input to be buffered\n * @param {number} distance distance to draw the buffer\n * @param {string} unit any of the options supported by turf units\n * @return {FeatureCollection|FeatureCollection|Polygon|MultiPolygon} buffered features\n *\n * @example\n * var pt = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-90.548630, 14.616599]\n * }\n * };\n * var unit = 'miles';\n *\n * var buffered = turf.buffer(pt, 500, unit);\n * var result = turf.featurecollection([buffered, pt]);\n *\n * //=result\n */\n\nmodule.exports = function (feature, radius, units) {\n\n var degrees = helpers.distanceToDegrees(radius, units);\n var fc = normalize(feature);\n var buffered = normalize(featureCollection(fc.features.map(function (f) {\n return bufferOp(f, degrees);\n })));\n\n if (buffered.features.length > 1) return buffered;\n else if (buffered.features.length === 1) return buffered.features[0];\n};\n\nfunction bufferOp(feature, radius) {\n var reader = new jsts.io.GeoJSONReader();\n var geom = reader.read(feature.geometry);\n var buffered = geom.buffer(radius);\n var writer = new jsts.io.GeoJSONWriter();\n buffered = writer.write(buffered);\n\n return {\n type: 'Feature',\n geometry: buffered,\n properties: {}\n };\n}\n","var bbox = require('turf-bbox'),\n point = require('turf-helpers').point;\n\n/**\n * Takes a {@link FeatureCollection} and returns the absolute center point of all features.\n *\n * @name center\n * @param {FeatureCollection} features input features\n * @return {Feature} a Point feature at the\n * absolute center point of all input features\n * @example\n * var features = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [\n * {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-97.522259, 35.4691]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-97.502754, 35.463455]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-97.508269, 35.463245]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-97.516809, 35.465779]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-97.515372, 35.467072]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-97.509363, 35.463053]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-97.511123, 35.466601]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-97.518547, 35.469327]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-97.519706, 35.469659]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-97.517839, 35.466998]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-97.508678, 35.464942]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-97.514914, 35.463453]\n * }\n * }\n * ]\n * };\n *\n * var centerPt = turf.center(features);\n * centerPt.properties['marker-size'] = 'large';\n * centerPt.properties['marker-color'] = '#000';\n *\n * var resultFeatures = features.features.concat(centerPt);\n * var result = {\n * \"type\": \"FeatureCollection\",\n * \"features\": resultFeatures\n * };\n *\n * //=result\n */\n\nmodule.exports = function (layer) {\n var ext = bbox(layer);\n var x = (ext[0] + ext[2]) / 2;\n var y = (ext[1] + ext[3]) / 2;\n return point([x, y]);\n};\n","var each = require('turf-meta').coordEach;\nvar point = require('turf-helpers').point;\n\n/**\n * Takes one or more features and calculates the centroid using\n * the mean of all vertices.\n * This lessens the effect of small islands and artifacts when calculating\n * the centroid of a set of polygons.\n *\n * @name centroid\n * @param {(Feature|FeatureCollection)} features input features\n * @return {Feature} the centroid of the input features\n * @example\n * var poly = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [[\n * [105.818939,21.004714],\n * [105.818939,21.061754],\n * [105.890007,21.061754],\n * [105.890007,21.004714],\n * [105.818939,21.004714]\n * ]]\n * }\n * };\n *\n * var centroidPt = turf.centroid(poly);\n *\n * var result = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [poly, centroidPt]\n * };\n *\n * //=result\n */\nmodule.exports = function (features) {\n var xSum = 0, ySum = 0, len = 0;\n each(features, function (coord) {\n xSum += coord[0];\n ySum += coord[1];\n len++;\n }, true);\n return point([xSum / len, ySum / len]);\n};\n","var inside = require('turf-inside');\n\n/**\n * Joins attributes FeatureCollection of polygons with a FeatureCollection of\n * points. Given an `inProperty` on points and an `outProperty` for polygons,\n * this finds every point that lies within each polygon, collects the `inProperty`\n * values from those points, and adds them as an array to `outProperty` on the\n * polygon.\n *\n * @name collect\n * @param {FeatureCollection} polygons polygons with values on which to aggregate\n * @param {FeatureCollection} points points to be aggregated\n * @param {string} inProperty property to be nested from\n * @param {string} outProperty property to be nested into\n * @return {FeatureCollection} polygons with properties listed based on `outField`\n * @example\n * var poly1 = polygon([[[0,0],[10,0],[10,10],[0,10],[0,0]]]);\n * var poly2 = polygon([[[10,0],[20,10],[20,20],[20,0],[10,0]]]);\n * var polyFC = featurecollection([poly1, poly2]);\n * var pt1 = point([5,5], {population: 200});\n * var pt2 = point([1,3], {population: 600});\n * var pt3 = point([14,2], {population: 100});\n * var pt4 = point([13,1], {population: 200});\n * var pt5 = point([19,7], {population: 300});\n * var ptFC = featurecollection([pt1, pt2, pt3, pt4, pt5]);\n * var aggregated = aggregate(polyFC, ptFC, 'population', 'values');\n *\n * aggregated.features[0].properties.values // => [200, 600]);\n */\nmodule.exports = function collect(polygons, points, inProperty, outProperty) {\n polygons.features.forEach(function (poly) {\n var values = points.features.filter(function (pt) {\n return inside(pt, poly);\n }).map(function (pt) {\n return pt.properties[inProperty];\n });\n\n if (!poly.properties) {\n poly.properties = {};\n }\n\n poly.properties[outProperty] = values;\n });\n\n return polygons;\n};\n","var meta = require('turf-meta');\n\n/**\n * Combines a {@link FeatureCollection} of {@link Point},\n * {@link LineString}, or {@link Polygon} features\n * into {@link MultiPoint}, {@link MultiLineString}, or\n * {@link MultiPolygon} features.\n *\n * @name combine\n * @param {FeatureCollection<(Point|LineString|Polygon)>} fc a FeatureCollection of any type\n * @return {FeatureCollection<(MultiPoint|MultiLineString|MultiPolygon)>} a FeatureCollection of corresponding type to input\n * @example\n * var fc = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [\n * {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [19.026432, 47.49134]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [19.074497, 47.509548]\n * }\n * }\n * ]\n * };\n *\n * var combined = turf.combine(fc);\n *\n * //=combined\n */\n\nmodule.exports = function (fc) {\n var groups = {\n MultiPoint: {coordinates: [], properties: []},\n MultiLineString: {coordinates: [], properties: []},\n MultiPolygon: {coordinates: [], properties: []}\n };\n\n var multiMapping = Object.keys(groups).reduce(function (memo, item) {\n memo[item.replace('Multi', '')] = item;\n return memo;\n }, {});\n\n function addToGroup(feature, key, multi) {\n if (!multi) {\n groups[key].coordinates.push(feature.geometry.coordinates);\n } else {\n groups[key].coordinates = groups[key].coordinates.concat(feature.geometry.coordinates);\n }\n groups[key].properties.push(feature.properties);\n }\n\n meta.featureEach(fc, function (feature) {\n if (!feature.geometry) return;\n if (groups[feature.geometry.type]) {\n addToGroup(feature, feature.geometry.type, true);\n } else if (multiMapping[feature.geometry.type]) {\n addToGroup(feature, multiMapping[feature.geometry.type], false);\n }\n });\n\n return {\n type: 'FeatureCollection',\n features: Object.keys(groups)\n .filter(function (key) {\n return groups[key].coordinates.length;\n })\n .sort()\n .map(function (key) {\n return {\n type: 'Feature',\n properties: {\n collectedProperties: groups[key].properties\n },\n geometry: {\n type: key,\n coordinates: groups[key].coordinates\n }\n };\n })\n };\n};\n","// 1. run tin on points\n// 2. calculate lenth of all edges and area of all triangles\n// 3. remove triangles that fail the max length test\n// 4. buffer the results slightly\n// 5. merge the results\nvar tin = require('turf-tin');\nvar union = require('turf-union');\nvar distance = require('turf-distance');\n\n/**\n * Takes a set of {@link Point|points} and returns a concave hull polygon.\n *\n * Internally, this uses [turf-tin](https://github.com/Turfjs/turf-tin) to generate geometries.\n *\n * @param {FeatureCollection} points input points\n * @param {number} maxEdge the size of an edge necessary for part of the\n * hull to become concave (in miles)\n * @param {string} units used for maxEdge distance (miles or kilometers)\n * @returns {Feature} a concave hull\n * @throws {Error} if maxEdge parameter is missing\n * @throws {Error} if units parameter is missing\n * @example\n * var points = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [\n * {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-63.601226, 44.642643]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-63.591442, 44.651436]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-63.580799, 44.648749]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-63.573589, 44.641788]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-63.587665, 44.64533]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-63.595218, 44.64765]\n * }\n * }\n * ]\n * };\n *\n * var hull = turf.concave(points, 1, 'miles');\n *\n * var resultFeatures = points.features.concat(hull);\n * var result = {\n * \"type\": \"FeatureCollection\",\n * \"features\": resultFeatures\n * };\n *\n * //=result\n */\nfunction concave(points, maxEdge, units) {\n if (typeof maxEdge !== 'number') throw new Error('maxEdge parameter is required');\n if (typeof units !== 'string') throw new Error('units parameter is required');\n\n var tinPolys = tin(points);\n var filteredPolys = tinPolys.features.filter(filterTriangles);\n tinPolys.features = filteredPolys;\n\n function filterTriangles(triangle) {\n var pt1 = triangle.geometry.coordinates[0][0];\n var pt2 = triangle.geometry.coordinates[0][1];\n var pt3 = triangle.geometry.coordinates[0][2];\n var dist1 = distance(pt1, pt2, units);\n var dist2 = distance(pt2, pt3, units);\n var dist3 = distance(pt1, pt3, units);\n return (dist1 <= maxEdge && dist2 <= maxEdge && dist3 <= maxEdge);\n }\n\n return merge(tinPolys);\n}\n\nfunction merge(polygons) {\n var merged = JSON.parse(JSON.stringify(polygons.features[0])),\n features = polygons.features;\n\n for (var i = 0, len = features.length; i < len; i++) {\n var poly = features[i];\n if (poly.geometry) {\n merged = union(merged, poly);\n }\n }\n return merged;\n}\n\nmodule.exports = concave;\n","var each = require('turf-meta').coordEach,\n convexHull = require('convex-hull'),\n polygon = require('turf-helpers').polygon;\n\n/**\n * Takes a set of {@link Point|points} and returns a\n * [convex hull](http://en.wikipedia.org/wiki/Convex_hull) polygon.\n *\n * Internally this uses\n * the [convex-hull](https://github.com/mikolalysenko/convex-hull) module that\n * implements a [monotone chain hull](http://en.wikibooks.org/wiki/Algorithm_Implementation/Geometry/Convex_hull/Monotone_chain).\n *\n * @name convex\n * @param {FeatureCollection} featurecollection input points\n * @returns {Feature} a convex hull\n * @example\n * var points = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [\n * {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [10.195312, 43.755225]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [10.404052, 43.8424511]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [10.579833, 43.659924]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [10.360107, 43.516688]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [10.14038, 43.588348]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [10.195312, 43.755225]\n * }\n * }\n * ]\n * };\n *\n * var hull = turf.convex(points);\n *\n * var resultFeatures = points.features.concat(hull);\n * var result = {\n * \"type\": \"FeatureCollection\",\n * \"features\": resultFeatures\n * };\n *\n * //=result\n */\nmodule.exports = function (featurecollection) {\n var points = [];\n each(featurecollection, function (coord) { points.push(coord); });\n var hull = convexHull(points);\n if (hull.length > 0) {\n var ring = [];\n for (var i = 0; i < hull.length; i++) {\n ring.push(points[hull[i][0]]);\n }\n ring.push(points[hull[hull.length - 1][1]]);\n return polygon([ring]);\n }\n return undefined;\n};\n","//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\nvar getCoord = require('turf-invariant').getCoord;\nvar helpers = require('turf-helpers');\nvar point = helpers.point;\nvar distanceToRadians = helpers.distanceToRadians;\n\n/**\n * Takes a {@link Point} and calculates the location of a destination point given a distance in degrees, radians, miles, or kilometers; and bearing in degrees. This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name destination\n * @param {Feature} from starting point\n * @param {number} distance distance from the starting point\n * @param {number} bearing ranging from -180 to 180\n * @param {String} [units=kilometers] miles, kilometers, degrees, or radians\n * @returns {Feature} destination point\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"marker-color\": \"#0f0\"\n * },\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-75.343, 39.984]\n * }\n * };\n * var distance = 50;\n * var bearing = 90;\n * var units = 'miles';\n *\n * var destination = turf.destination(point, distance, bearing, units);\n * destination.properties['marker-color'] = '#f00';\n *\n * var result = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [point, destination]\n * };\n *\n * //=result\n */\nmodule.exports = function (from, distance, bearing, units) {\n var degrees2radians = Math.PI / 180;\n var radians2degrees = 180 / Math.PI;\n var coordinates1 = getCoord(from);\n var longitude1 = degrees2radians * coordinates1[0];\n var latitude1 = degrees2radians * coordinates1[1];\n var bearing_rad = degrees2radians * bearing;\n\n var radians = distanceToRadians(distance, units);\n\n var latitude2 = Math.asin(Math.sin(latitude1) * Math.cos(radians) +\n Math.cos(latitude1) * Math.sin(radians) * Math.cos(bearing_rad));\n var longitude2 = longitude1 + Math.atan2(Math.sin(bearing_rad) *\n Math.sin(radians) * Math.cos(latitude1),\n Math.cos(radians) - Math.sin(latitude1) * Math.sin(latitude2));\n\n return point([radians2degrees * longitude2, radians2degrees * latitude2]);\n};\n","// depend on jsts for now https://github.com/bjornharrtell/jsts/blob/master/examples/overlay.html\nvar jsts = require('jsts');\n\n/**\n * Finds the difference between two {@link Polygon|polygons} by clipping the second\n * polygon from the first.\n *\n * @name difference\n * @param {Feature} poly1 input Polygon feaure\n * @param {Feature} poly2 Polygon feature to difference from `poly1`\n * @return {Feature} a Polygon feature showing the area of `poly1` excluding the area of `poly2`\n * @example\n * var poly1 = {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"fill\": \"#0f0\"\n * },\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [[\n * [-46.738586, -23.596711],\n * [-46.738586, -23.458207],\n * [-46.560058, -23.458207],\n * [-46.560058, -23.596711],\n * [-46.738586, -23.596711]\n * ]]\n * }\n * };\n * var poly2 = {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"fill\": \"#00f\"\n * },\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [[\n * [-46.650009, -23.631314],\n * [-46.650009, -23.5237],\n * [-46.509246, -23.5237],\n * [-46.509246, -23.631314],\n * [-46.650009, -23.631314]\n * ]]\n * }\n * };\n *\n * var differenced = turf.difference(poly1, poly2);\n * differenced.properties.fill = '#f00';\n *\n * var polygons = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [poly1, poly2]\n * };\n *\n * //=polygons\n *\n * //=differenced\n */\n\nmodule.exports = function (p1, p2) {\n var poly1 = JSON.parse(JSON.stringify(p1));\n var poly2 = JSON.parse(JSON.stringify(p2));\n if (poly1.type !== 'Feature') {\n poly1 = {\n type: 'Feature',\n properties: {},\n geometry: poly1\n };\n }\n if (poly2.type !== 'Feature') {\n poly2 = {\n type: 'Feature',\n properties: {},\n geometry: poly2\n };\n }\n\n var reader = new jsts.io.GeoJSONReader();\n var a = reader.read(JSON.stringify(poly1.geometry));\n var b = reader.read(JSON.stringify(poly2.geometry));\n var differenced = a.difference(b);\n\n if (differenced.isEmpty()) return undefined;\n\n var writer = new jsts.io.GeoJSONWriter();\n var geojsonGeometry = writer.write(differenced);\n\n poly1.geometry = differenced;\n\n return {\n type: 'Feature',\n properties: poly1.properties,\n geometry: geojsonGeometry\n };\n};\n","var getCoord = require('turf-invariant').getCoord;\nvar radiansToDistance = require('turf-helpers').radiansToDistance;\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n\n/**\n * Calculates the distance between two {@link Point|points} in degrees, radians,\n * miles, or kilometers. This uses the\n * [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula)\n * to account for global curvature.\n *\n * @name distance\n * @param {Feature} from origin point\n * @param {Feature} to destination point\n * @param {String} [units=kilometers] can be degrees, radians, miles, or kilometers\n * @return {Number} distance between the two points\n * @example\n * var from = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-75.343, 39.984]\n * }\n * };\n * var to = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-75.534, 39.123]\n * }\n * };\n * var units = \"miles\";\n *\n * var points = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [from, to]\n * };\n *\n * //=points\n *\n * var distance = turf.distance(from, to, units);\n *\n * //=distance\n */\nmodule.exports = function (from, to, units) {\n var degrees2radians = Math.PI / 180;\n var coordinates1 = getCoord(from);\n var coordinates2 = getCoord(to);\n var dLat = degrees2radians * (coordinates2[1] - coordinates1[1]);\n var dLon = degrees2radians * (coordinates2[0] - coordinates1[0]);\n var lat1 = degrees2radians * coordinates1[1];\n var lat2 = degrees2radians * coordinates2[1];\n\n var a = Math.pow(Math.sin(dLat / 2), 2) +\n Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n\n return radiansToDistance(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), units);\n};\n","var bbox = require('turf-bbox');\nvar bboxPolygon = require('turf-bbox-polygon');\n\n/**\n * Takes any number of features and returns a rectangular {@link Polygon} that encompasses all vertices.\n *\n * @name envelope\n * @param {FeatureCollection} fc input features\n * @return {Feature} a rectangular Polygon feature that encompasses all vertices\n * @example\n * var fc = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [\n * {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"name\": \"Location A\"\n * },\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-75.343, 39.984]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"name\": \"Location B\"\n * },\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-75.833, 39.284]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"name\": \"Location C\"\n * },\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-75.534, 39.123]\n * }\n * }\n * ]\n * };\n *\n * var enveloped = turf.envelope(fc);\n *\n * var resultFeatures = fc.features.concat(enveloped);\n * var result = {\n * \"type\": \"FeatureCollection\",\n * \"features\": resultFeatures\n * };\n *\n * //=result\n */\n\nmodule.exports = function (features) {\n return bboxPolygon(bbox(features));\n};\n","var featureCollection = require('turf-helpers').featureCollection;\nvar each = require('turf-meta').coordEach;\nvar point = require('turf-helpers').point;\n\n/**\n * Takes a feature or set of features and returns all positions as\n * {@link Point|points}.\n *\n * @name explode\n * @param {(Feature|FeatureCollection)} geojson input features\n * @return {FeatureCollection} points representing the exploded input features\n * @throws {Error} if it encounters an unknown geometry type\n * @example\n * var poly = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [[\n * [177.434692, -17.77517],\n * [177.402076, -17.779093],\n * [177.38079, -17.803937],\n * [177.40242, -17.826164],\n * [177.438468, -17.824857],\n * [177.454948, -17.796746],\n * [177.434692, -17.77517]\n * ]]\n * }\n * };\n *\n * var points = turf.explode(poly);\n *\n * //=poly\n *\n * //=points\n */\nmodule.exports = function (geojson) {\n var points = [];\n each(geojson, function (coord) {\n points.push(point(coord));\n });\n return featureCollection(points);\n};\n","var coordEach = require('turf-meta').coordEach;\n\n/**\n * Takes input features and flips all of their coordinates\n * from `[x, y]` to `[y, x]`.\n *\n * @name flip\n * @param {(Feature|FeatureCollection)} input input features\n * @returns {(Feature|FeatureCollection)} a feature or set of features of the same type as `input` with flipped coordinates\n * @example\n * var serbia = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [20.566406, 43.421008]\n * }\n * };\n *\n * //=serbia\n *\n * var saudiArabia = turf.flip(serbia);\n *\n * //=saudiArabia\n */\nmodule.exports = function flip(input) {\n // ensure that we don't modify features in-place and changes to the\n // output do not change the previous feature, including changes to nested\n // properties.\n input = JSON.parse(JSON.stringify(input));\n\n coordEach(input, function (coord) {\n coord.reverse();\n });\n return input;\n};\n","var point = require('turf-point');\n\n/**\n * Takes a bounding box and a cell depth and returns a {@link FeatureCollection} of {@link Point} features in a grid.\n *\n * @module turf/grid\n * @category interpolation\n * @param {Array} extent extent in [minX, minY, maxX, maxY] order\n * @param {Number} depth how many cells to output\n * @return {FeatureCollection} grid as FeatureCollection with {@link Point} features\n * @example\n * var extent = [-70.823364, -33.553984, -70.473175, -33.302986];\n * var depth = 10;\n *\n * var grid = turf.grid(extent, depth);\n *\n * //=grid\n */\nmodule.exports = function(extents, depth) {\n var xmin = extents[0];\n var ymin = extents[1];\n var xmax = extents[2];\n var ymax = extents[3];\n var interval = (xmax - xmin) / depth;\n var coords = [];\n var fc = {\n type: 'FeatureCollection',\n features: []\n };\n\n for (var x=0; x<=depth; x++){\n for (var y=0;y<=depth; y++){\n fc.features.push(point([(x * interval) + xmin, (y * interval) + ymin]));\n }\n }\n return fc;\n}\n","/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} properties properties\n * @returns {FeatureCollection} a FeatureCollection of input features\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [\n * 67.5,\n * 32.84267363195431\n * ]\n * }\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties) {\n return {\n type: 'Feature',\n properties: properties || {},\n geometry: geometry\n };\n}\n\nmodule.exports.feature = feature;\n\n/**\n * Takes coordinates and properties (optional) and returns a new {@link Point} feature.\n *\n * @name point\n * @param {number[]} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object=} properties an Object that is used as the {@link Feature}'s\n * properties\n * @returns {Feature} a Point feature\n * @example\n * var pt1 = turf.point([-75.343, 39.984]);\n *\n * //=pt1\n */\nmodule.exports.point = function (coordinates, properties) {\n if (!Array.isArray(coordinates)) throw new Error('Coordinates must be an array');\n if (coordinates.length < 2) throw new Error('Coordinates must be at least 2 numbers long');\n return feature({\n type: 'Point',\n coordinates: coordinates.slice()\n }, properties);\n};\n\n/**\n * Takes an array of LinearRings and optionally an {@link Object} with properties and returns a {@link Polygon} feature.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object=} properties a properties object\n * @returns {Feature} a Polygon feature\n * @throws {Error} throw an error if a LinearRing of the polygon has too few positions\n * or if a LinearRing of the Polygon does not have matching Positions at the\n * beginning & end.\n * @example\n * var polygon = turf.polygon([[\n * [-2.275543, 53.464547],\n * [-2.275543, 53.489271],\n * [-2.215118, 53.489271],\n * [-2.215118, 53.464547],\n * [-2.275543, 53.464547]\n * ]], { name: 'poly1', population: 400});\n *\n * //=polygon\n */\nmodule.exports.polygon = function (coordinates, properties) {\n\n if (!coordinates) throw new Error('No coordinates passed');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties);\n};\n\n/**\n * Creates a {@link LineString} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object=} properties an Object of key-value pairs to add as properties\n * @returns {Feature} a LineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var linestring1 = turf.lineString([\n *\t[-21.964416, 64.148203],\n *\t[-21.956176, 64.141316],\n *\t[-21.93901, 64.135924],\n *\t[-21.927337, 64.136673]\n * ]);\n * var linestring2 = turf.lineString([\n *\t[-21.929054, 64.127985],\n *\t[-21.912918, 64.134726],\n *\t[-21.916007, 64.141016],\n * \t[-21.930084, 64.14446]\n * ], {name: 'line 1', distance: 145});\n *\n * //=linestring1\n *\n * //=linestring2\n */\nmodule.exports.lineString = function (coordinates, properties) {\n if (!coordinates) {\n throw new Error('No coordinates passed');\n }\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties);\n};\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @returns {FeatureCollection} a FeatureCollection of input features\n * @example\n * var features = [\n * turf.point([-75.343, 39.984], {name: 'Location A'}),\n * turf.point([-75.833, 39.284], {name: 'Location B'}),\n * turf.point([-75.534, 39.123], {name: 'Location C'})\n * ];\n *\n * var fc = turf.featureCollection(features);\n *\n * //=fc\n */\nmodule.exports.featureCollection = function (features) {\n return {\n type: 'FeatureCollection',\n features: features\n };\n};\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object=} properties an Object of key-value pairs to add as properties\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n *\n */\nmodule.exports.multiLineString = function (coordinates, properties) {\n if (!coordinates) {\n throw new Error('No coordinates passed');\n }\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties);\n};\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object=} properties an Object of key-value pairs to add as properties\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n *\n */\nmodule.exports.multiPoint = function (coordinates, properties) {\n if (!coordinates) {\n throw new Error('No coordinates passed');\n }\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties);\n};\n\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object=} properties an Object of key-value pairs to add as properties\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]);\n *\n * //=multiPoly\n *\n */\nmodule.exports.multiPolygon = function (coordinates, properties) {\n if (!coordinates) {\n throw new Error('No coordinates passed');\n }\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties);\n};\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<{Geometry}>} geometries an array of GeoJSON Geometries\n * @param {Object=} properties an Object of key-value pairs to add as properties\n * @returns {Feature} a geometrycollection feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometrycollection([[0,0],[10,10]]);\n *\n * //=collection\n */\nmodule.exports.geometryCollection = function (geometries, properties) {\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties);\n};\n\nvar factors = {\n miles: 3960,\n nauticalmiles: 3441.145,\n degrees: 57.2957795,\n radians: 1,\n inches: 250905600,\n yards: 6969600,\n meters: 6373000,\n metres: 6373000,\n kilometers: 6373,\n kilometres: 6373\n};\n\n/*\n * Convert a distance measurement from radians to a more friendly unit.\n *\n * @name radiansToDistance\n * @param {number} distance in radians across the sphere\n * @param {string=kilometers} units: one of miles, nauticalmiles, degrees, radians,\n * inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nmodule.exports.radiansToDistance = function (radians, units) {\n var factor = factors[units || 'kilometers'];\n if (factor === undefined) {\n throw new Error('Invalid unit');\n }\n return radians * factor;\n};\n\n/*\n * Convert a distance measurement from a real-world unit into radians\n *\n * @name distanceToRadians\n * @param {number} distance in real units\n * @param {string=kilometers} units: one of miles, nauticalmiles, degrees, radians,\n * inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nmodule.exports.distanceToRadians = function (distance, units) {\n var factor = factors[units || 'kilometers'];\n if (factor === undefined) {\n throw new Error('Invalid unit');\n }\n return distance / factor;\n};\n\n/*\n * Convert a distance measurement from a real-world unit into degrees\n *\n * @name distanceToRadians\n * @param {number} distance in real units\n * @param {string=kilometers} units: one of miles, nauticalmiles, degrees, radians,\n * inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nmodule.exports.distanceToDegrees = function (distance, units) {\n var factor = factors[units || 'kilometers'];\n if (factor === undefined) {\n throw new Error('Invalid unit');\n }\n return (distance / factor) * 57.2958;\n};\n","var point = require('turf-helpers').point;\nvar polygon = require('turf-helpers').polygon;\nvar distance = require('turf-distance');\nvar featurecollection = require('turf-helpers').featureCollection;\n\n//Precompute cosines and sines of angles used in hexagon creation\n// for performance gain\nvar cosines = [];\nvar sines = [];\nfor (var i = 0; i < 6; i++) {\n var angle = 2 * Math.PI / 6 * i;\n cosines.push(Math.cos(angle));\n sines.push(Math.sin(angle));\n}\n\n/**\n * Takes a bounding box and a cell size in degrees and returns a {@link FeatureCollection} of flat-topped\n * hexagons ({@link Polygon} features) aligned in an \"odd-q\" vertical grid as\n * described in [Hexagonal Grids](http://www.redblobgames.com/grids/hexagons/).\n *\n * @name hexGrid\n * @param {Array} bbox bounding box in [minX, minY, maxX, maxY] order\n * @param {number} cellSize dimension of cell in specified units\n * @param {string} units used in calculating cellWidth ('miles' or 'kilometers')\n * @param {boolean} triangles whether to return as triangles instead of hexagons\n * @return {FeatureCollection} a hexagonal grid\n * @example\n * var bbox = [-96,31,-84,40];\n * var cellWidth = 50;\n * var units = 'miles';\n *\n * var hexgrid = turf.hexGrid(bbox, cellWidth, units);\n *\n * //=hexgrid\n */\nmodule.exports = function hexGrid(bbox, cellSize, units, triangles) {\n var xFraction = cellSize / (distance(point([bbox[0], bbox[1]]), point([bbox[2], bbox[1]]), units));\n var cellWidth = xFraction * (bbox[2] - bbox[0]);\n var yFraction = cellSize / (distance(point([bbox[0], bbox[1]]), point([bbox[0], bbox[3]]), units));\n var cellHeight = yFraction * (bbox[3] - bbox[1]);\n var radius = cellWidth / 2;\n\n var hex_width = radius * 2;\n var hex_height = Math.sqrt(3) / 2 * cellHeight;\n\n var box_width = bbox[2] - bbox[0];\n var box_height = bbox[3] - bbox[1];\n\n var x_interval = 3 / 4 * hex_width;\n var y_interval = hex_height;\n\n var x_span = box_width / (hex_width - radius / 2);\n var x_count = Math.ceil(x_span);\n if (Math.round(x_span) === x_count) {\n x_count++;\n }\n\n var x_adjust = ((x_count * x_interval - radius / 2) - box_width) / 2 - radius / 2;\n\n var y_count = Math.ceil(box_height / hex_height);\n\n var y_adjust = (box_height - y_count * hex_height) / 2;\n\n var hasOffsetY = y_count * hex_height - box_height > hex_height / 2;\n if (hasOffsetY) {\n y_adjust -= hex_height / 4;\n }\n\n var fc = featurecollection([]);\n for (var x = 0; x < x_count; x++) {\n for (var y = 0; y <= y_count; y++) {\n\n var isOdd = x % 2 === 1;\n if (y === 0 && isOdd) {\n continue;\n }\n\n if (y === 0 && hasOffsetY) {\n continue;\n }\n\n var center_x = x * x_interval + bbox[0] - x_adjust;\n var center_y = y * y_interval + bbox[1] + y_adjust;\n\n if (isOdd) {\n center_y -= hex_height / 2;\n }\n if (triangles) {\n fc.features.push.apply(fc.features, hexTriangles([center_x, center_y], cellWidth / 2, cellHeight / 2));\n } else {\n fc.features.push(hexagon([center_x, center_y], cellWidth / 2, cellHeight / 2));\n }\n }\n }\n\n return fc;\n};\n\n//Center should be [x, y]\nfunction hexagon(center, rx, ry) {\n var vertices = [];\n for (var i = 0; i < 6; i++) {\n var x = center[0] + rx * cosines[i];\n var y = center[1] + ry * sines[i];\n vertices.push([x, y]);\n }\n //first and last vertex must be the same\n vertices.push(vertices[0]);\n return polygon([vertices]);\n}\n\n//Center should be [x, y]\nfunction hexTriangles(center, rx, ry) {\n var triangles = [];\n for (var i = 0; i < 6; i++) {\n var vertices = [];\n vertices.push(center);\n vertices.push([\n center[0] + rx * cosines[i],\n center[1] + ry * sines[i]\n ]);\n vertices.push([\n center[0] + rx * cosines[(i + 1) % 6],\n center[1] + ry * sines[(i + 1) % 6]\n ]);\n vertices.push(center);\n triangles.push(polygon([vertices]));\n }\n return triangles;\n}\n","var invariant = require('turf-invariant');\n\n// http://en.wikipedia.org/wiki/Even%E2%80%93odd_rule\n// modified from: https://github.com/substack/point-in-polygon/blob/master/index.js\n// which was modified from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n\n/**\n * Takes a {@link Point} and a {@link Polygon} or {@link MultiPolygon} and determines if the point resides inside the polygon. The polygon can\n * be convex or concave. The function accounts for holes.\n *\n * @name inside\n * @param {Feature} point input point\n * @param {Feature<(Polygon|MultiPolygon)>} polygon input polygon or multipolygon\n * @return {Boolean} `true` if the Point is inside the Polygon; `false` if the Point is not inside the Polygon\n * @example\n * var pt1 = {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"marker-color\": \"#f00\"\n * },\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-111.467285, 40.75766]\n * }\n * };\n * var pt2 = {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"marker-color\": \"#0f0\"\n * },\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-111.873779, 40.647303]\n * }\n * };\n * var poly = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [[\n * [-112.074279, 40.52215],\n * [-112.074279, 40.853293],\n * [-111.610107, 40.853293],\n * [-111.610107, 40.52215],\n * [-112.074279, 40.52215]\n * ]]\n * }\n * };\n *\n * var features = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [pt1, pt2, poly]\n * };\n *\n * //=features\n *\n * var isInside1 = turf.inside(pt1, poly);\n * //=isInside1\n *\n * var isInside2 = turf.inside(pt2, poly);\n * //=isInside2\n */\nmodule.exports = function input(point, polygon) {\n var pt = invariant.getCoord(point);\n var polys = polygon.geometry.coordinates;\n // normalize to multipolygon\n if (polygon.geometry.type === 'Polygon') polys = [polys];\n\n for (var i = 0, insidePoly = false; i < polys.length && !insidePoly; i++) {\n // check if it is in the outer ring first\n if (inRing(pt, polys[i][0])) {\n var inHole = false;\n var k = 1;\n // check for the point in any of the holes\n while (k < polys[i].length && !inHole) {\n if (inRing(pt, polys[i][k])) {\n inHole = true;\n }\n k++;\n }\n if (!inHole) insidePoly = true;\n }\n }\n return insidePoly;\n};\n\n// pt is [x,y] and ring is [[x,y], [x,y],..]\nfunction inRing(pt, ring) {\n var isInside = false;\n for (var i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n var xi = ring[i][0], yi = ring[i][1];\n var xj = ring[j][0], yj = ring[j][1];\n var intersect = ((yi > pt[1]) !== (yj > pt[1])) &&\n (pt[0] < (xj - xi) * (pt[1] - yi) / (yj - yi) + xi);\n if (intersect) isInside = !isInside;\n }\n return isInside;\n}\n","// depend on jsts for now https://github.com/bjornharrtell/jsts/blob/master/examples/overlay.html\nvar jsts = require('jsts');\n\n/**\n * Takes two {@link Polygon|polygons} and finds their intersection. If they share a border, returns the border; if they don't intersect, returns undefined.\n *\n * @name intersect\n * @param {Feature} poly1 the first polygon\n * @param {Feature} poly2 the second polygon\n * @return {(Feature|undefined|Feature)} if `poly1` and `poly2` overlap, returns a Polygon feature representing the area they overlap; if `poly1` and `poly2` do not overlap, returns `undefined`; if `poly1` and `poly2` share a border, a MultiLineString of the locations where their borders are shared\n * @example\n * var poly1 = {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"fill\": \"#0f0\"\n * },\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [[\n * [-122.801742, 45.48565],\n * [-122.801742, 45.60491],\n * [-122.584762, 45.60491],\n * [-122.584762, 45.48565],\n * [-122.801742, 45.48565]\n * ]]\n * }\n * }\n * var poly2 = {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"fill\": \"#00f\"\n * },\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [[\n * [-122.520217, 45.535693],\n * [-122.64038, 45.553967],\n * [-122.720031, 45.526554],\n * [-122.669906, 45.507309],\n * [-122.723464, 45.446643],\n * [-122.532577, 45.408574],\n * [-122.487258, 45.477466],\n * [-122.520217, 45.535693]\n * ]]\n * }\n * }\n *\n * var polygons = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [poly1, poly2]\n * };\n *\n * var intersection = turf.intersect(poly1, poly2);\n *\n * //=polygons\n *\n * //=intersection\n */\nmodule.exports = function intersect(poly1, poly2) {\n var geom1, geom2;\n if (poly1.type === 'Feature') geom1 = poly1.geometry;\n else geom1 = poly1;\n if (poly2.type === 'Feature') geom2 = poly2.geometry;\n else geom2 = poly2;\n var reader = new jsts.io.GeoJSONReader();\n var a = reader.read(JSON.stringify(geom1));\n var b = reader.read(JSON.stringify(geom2));\n var intersection = a.intersection(b);\n\n if (intersection.isEmpty()) {\n return undefined;\n }\n\n var writer = new jsts.io.GeoJSONWriter();\n\n var geojsonGeometry = writer.write(intersection);\n return {\n type: 'Feature',\n properties: {},\n geometry: geojsonGeometry\n };\n};\n","/**\n * Unwrap a coordinate from a Feature with a Point geometry, a Point\n * geometry, or a single coordinate.\n *\n * @param {*} obj any value\n * @returns {Array} a coordinate\n */\nfunction getCoord(obj) {\n if (Array.isArray(obj) &&\n typeof obj[0] === 'number' &&\n typeof obj[1] === 'number') {\n return obj;\n } else if (obj) {\n if (obj.type === 'Feature' &&\n obj.geometry &&\n obj.geometry.type === 'Point' &&\n Array.isArray(obj.geometry.coordinates)) {\n return obj.geometry.coordinates;\n } else if (obj.type === 'Point' &&\n Array.isArray(obj.coordinates)) {\n return obj.coordinates;\n }\n }\n throw new Error('A coordinate, feature, or point geometry is required');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @alias geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @alias featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @alias collectionOf\n * @param {FeatureCollection} featurecollection a featurecollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featurecollection, type, name) {\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featurecollection || featurecollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featurecollection.features.length; i++) {\n var feature = featurecollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\nmodule.exports.geojsonType = geojsonType;\nmodule.exports.collectionOf = collectionOf;\nmodule.exports.featureOf = featureOf;\nmodule.exports.getCoord = getCoord;\n","/* eslint-disable */\n\n/*\n * Copyright (c) 2010, Jason Davies.\n *\n * All rights reserved. This code is based on Bradley White's Java version,\n * which is in turn based on Nicholas Yue's C++ version, which in turn is based\n * on Paul D. Bourke's original Fortran version. See below for the respective\n * copyright notices.\n *\n * See http://local.wasp.uwa.edu.au/~pbourke/papers/conrec/ for the original\n * paper by Paul D. Bourke.\n *\n * The vector conversion code is based on http://apptree.net/conrec.htm by\n * Graham Cox.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of the nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/*\n * Copyright (c) 1996-1997 Nicholas Yue\n *\n * This software is copyrighted by Nicholas Yue. This code is based on Paul D.\n * Bourke's CONREC.F routine.\n *\n * The authors hereby grant permission to use, copy, and distribute this\n * software and its documentation for any purpose, provided that existing\n * copyright notices are retained in all copies and that this notice is\n * included verbatim in any distributions. Additionally, the authors grant\n * permission to modify this software and its documentation for any purpose,\n * provided that such modifications are not distributed without the explicit\n * consent of the authors and that existing copyright notices are retained in\n * all copies. Some of the algorithms implemented by this software are\n * patented, observe all applicable patent law.\n *\n * IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR\n * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT\n * OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF,\n * EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,\n * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS\n * PROVIDED ON AN \"AS IS\" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO\n * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR\n * MODIFICATIONS.\n */\n\n\n module.exports = Conrec;\n\n var EPSILON = 1e-10;\n\n function pointsEqual(a, b) {\n var x = a.x - b.x, y = a.y - b.y;\n return x * x + y * y < EPSILON;\n }\n\n function reverseList(list) {\n var pp = list.head;\n\n while (pp) {\n // swap prev/next pointers\n var temp = pp.next;\n pp.next = pp.prev;\n pp.prev = temp;\n\n // continue through the list\n pp = temp;\n }\n\n // swap head/tail pointers\n var temp = list.head;\n list.head = list.tail;\n list.tail = temp;\n }\n\n function ContourBuilder(level) {\n this.level = level;\n this.s = null;\n this.count = 0;\n }\n ContourBuilder.prototype.remove_seq = function (list) {\n // if list is the first item, static ptr s is updated\n if (list.prev) {\n list.prev.next = list.next;\n } else {\n this.s = list.next;\n }\n\n if (list.next) {\n list.next.prev = list.prev;\n }\n --this.count;\n };\n ContourBuilder.prototype.addSegment = function (a, b) {\n var ss = this.s;\n var ma = null;\n var mb = null;\n var prependA = false;\n var prependB = false;\n\n while (ss) {\n if (ma == null) {\n // no match for a yet\n if (pointsEqual(a, ss.head.p)) {\n ma = ss;\n prependA = true;\n } else if (pointsEqual(a, ss.tail.p)) {\n ma = ss;\n }\n }\n if (mb == null) {\n // no match for b yet\n if (pointsEqual(b, ss.head.p)) {\n mb = ss;\n prependB = true;\n } else if (pointsEqual(b, ss.tail.p)) {\n mb = ss;\n }\n }\n // if we matched both no need to continue searching\n if (mb != null && ma != null) {\n break;\n } else {\n ss = ss.next;\n }\n }\n\n // c is the case selector based on which of ma and/or mb are set\n var c = ((ma != null) ? 1 : 0) | ((mb != null) ? 2 : 0);\n\n switch (c) {\n case 0: // both unmatched, add as new sequence\n var aa = {p: a, prev: null};\n var bb = {p: b, next: null};\n aa.next = bb;\n bb.prev = aa;\n\n // create sequence element and push onto head of main list. The order\n // of items in this list is unimportant\n ma = {head: aa, tail: bb, next: this.s, prev: null, closed: false};\n if (this.s) {\n this.s.prev = ma;\n }\n this.s = ma;\n\n ++this.count; // not essential - tracks number of unmerged sequences\n break;\n\n case 1: // a matched, b did not - thus b extends sequence ma\n var pp = {p: b};\n\n if (prependA) {\n pp.next = ma.head;\n pp.prev = null;\n ma.head.prev = pp;\n ma.head = pp;\n } else {\n pp.next = null;\n pp.prev = ma.tail;\n ma.tail.next = pp;\n ma.tail = pp;\n }\n break;\n\n case 2: // b matched, a did not - thus a extends sequence mb\n var pp = {p: a};\n\n if (prependB) {\n pp.next = mb.head;\n pp.prev = null;\n mb.head.prev = pp;\n mb.head = pp;\n } else {\n pp.next = null;\n pp.prev = mb.tail;\n mb.tail.next = pp;\n mb.tail = pp;\n }\n break;\n\n case 3: // both matched, can merge sequences\n // if the sequences are the same, do nothing, as we are simply closing this path (could set a flag)\n\n if (ma === mb) {\n var pp = {p: ma.tail.p, next: ma.head, prev: null};\n ma.head.prev = pp;\n ma.head = pp;\n ma.closed = true;\n break;\n }\n\n // there are 4 ways the sequence pair can be joined. The current setting of prependA and\n // prependB will tell us which type of join is needed. For head/head and tail/tail joins\n // one sequence needs to be reversed\n switch ((prependA ? 1 : 0) | (prependB ? 2 : 0)) {\n case 0: // tail-tail\n // reverse ma and append to mb\n reverseList(ma);\n // fall through to head/tail case\n case 1: // head-tail\n // ma is appended to mb and ma discarded\n mb.tail.next = ma.head;\n ma.head.prev = mb.tail;\n mb.tail = ma.tail;\n\n //discard ma sequence record\n this.remove_seq(ma);\n break;\n\n case 3: // head-head\n // reverse ma and append mb to it\n reverseList(ma);\n // fall through to tail/head case\n case 2: // tail-head\n // mb is appended to ma and mb is discarded\n ma.tail.next = mb.head;\n mb.head.prev = ma.tail;\n ma.tail = mb.tail;\n\n //discard mb sequence record\n this.remove_seq(mb);\n break;\n }\n }\n };\n\n /*\n * Implements CONREC.\n *\n * @private\n * @param {function} drawContour function for drawing contour. Defaults to a\n * custom \"contour builder\", which populates the\n * contours property.\n */\n function Conrec(drawContour) {\n if (!drawContour) {\n var c = this;\n c.contours = {};\n /**\n * drawContour - interface for implementing the user supplied method to\n * render the countours.\n *\n * Draws a line between the start and end coordinates.\n *\n * @private\n * @param startX - start coordinate for X\n * @param startY - start coordinate for Y\n * @param endX - end coordinate for X\n * @param endY - end coordinate for Y\n * @param contourLevel - Contour level for line.\n */\n this.drawContour = function (startX, startY, endX, endY, contourLevel, k) {\n var cb = c.contours[k];\n if (!cb) {\n cb = c.contours[k] = new ContourBuilder(contourLevel);\n }\n cb.addSegment({x: startX, y: startY}, {x: endX, y: endY});\n };\n this.contourList = function () {\n var l = [];\n var a = c.contours;\n for (var k in a) {\n var s = a[k].s;\n var level = a[k].level;\n while (s) {\n var h = s.head;\n var l2 = [];\n l2.level = level;\n l2.k = k;\n while (h && h.p) {\n l2.push(h.p);\n h = h.next;\n }\n l.push(l2);\n s = s.next;\n }\n }\n l.sort(function (a, b) { return a.k - b.k; });\n return l;\n };\n } else {\n this.drawContour = drawContour;\n }\n this.h = new Array(5);\n this.sh = new Array(5);\n this.xh = new Array(5);\n this.yh = new Array(5);\n }\n\n /*\n * contour is a contouring subroutine for rectangularily spaced data\n *\n * It emits calls to a line drawing subroutine supplied by the user which\n * draws a contour map corresponding to real*4data on a randomly spaced\n * rectangular grid. The coordinates emitted are in the same units given in\n * the x() and y() arrays.\n *\n * Any number of contour levels may be specified but they must be in order of\n * increasing value.\n *\n *\n * @param {number[][]} d - matrix of data to contour\n * @param {number} ilb,iub,jlb,jub - index bounds of data matrix\n *\n * The following two, one dimensional arrays (x and y) contain\n * the horizontal and vertical coordinates of each sample points.\n * @param {number[]} x - data matrix column coordinates\n * @param {number[]} y - data matrix row coordinates\n * @param {number} nc - number of contour levels\n * @param {number[]} z - contour levels in increasing order.\n */\n Conrec.prototype.contour = function (d, ilb, iub, jlb, jub, x, y, nc, z) {\n var h = this.h, sh = this.sh, xh = this.xh, yh = this.yh;\n var drawContour = this.drawContour;\n this.contours = {};\n\n var xsect = function (p1, p2) {\n return (h[p2] * xh[p1] - h[p1] * xh[p2]) / (h[p2] - h[p1]);\n };\n\n var ysect = function (p1, p2) {\n return (h[p2] * yh[p1] - h[p1] * yh[p2]) / (h[p2] - h[p1]);\n };\n var m1;\n var m2;\n var m3;\n var case_value;\n var dmin;\n var dmax;\n var x1 = 0.0;\n var x2 = 0.0;\n var y1 = 0.0;\n var y2 = 0.0;\n\n // The indexing of im and jm should be noted as it has to start from zero\n // unlike the fortran counter part\n var im = [0, 1, 1, 0];\n var jm = [0, 0, 1, 1];\n\n // Note that castab is arranged differently from the FORTRAN code because\n // Fortran and C/C++ arrays are transposed of each other, in this case\n // it is more tricky as castab is in 3 dimensions\n var castab = [\n [\n [0, 0, 8], [0, 2, 5], [7, 6, 9]\n ],\n [\n [0, 3, 4], [1, 3, 1], [4, 3, 0]\n ],\n [\n [9, 6, 7], [5, 2, 0], [8, 0, 0]\n ]\n ];\n\n for (var j = (jub - 1); j >= jlb; j--) {\n for (var i = ilb; i <= iub - 1; i++) {\n var temp1, temp2;\n temp1 = Math.min(d[i][j], d[i][j + 1]);\n temp2 = Math.min(d[i + 1][j], d[i + 1][j + 1]);\n dmin = Math.min(temp1, temp2);\n temp1 = Math.max(d[i][j], d[i][j + 1]);\n temp2 = Math.max(d[i + 1][j], d[i + 1][j + 1]);\n dmax = Math.max(temp1, temp2);\n\n if (dmax >= z[0] && dmin <= z[nc - 1]) {\n for (var k = 0; k < nc; k++) {\n if (z[k] >= dmin && z[k] <= dmax) {\n for (var m = 4; m >= 0; m--) {\n if (m > 0) {\n // The indexing of im and jm should be noted as it has to\n // start from zero\n h[m] = d[i + im[m - 1]][j + jm[m - 1]] - z[k];\n xh[m] = x[i + im[m - 1]];\n yh[m] = y[j + jm[m - 1]];\n } else {\n h[0] = 0.25 * (h[1] + h[2] + h[3] + h[4]);\n xh[0] = 0.5 * (x[i] + x[i + 1]);\n yh[0] = 0.5 * (y[j] + y[j + 1]);\n }\n if (h[m] > EPSILON) {\n sh[m] = 1;\n } else if (h[m] < -EPSILON) {\n sh[m] = -1;\n } else\n sh[m] = 0;\n }\n //\n // Note: at this stage the relative heights of the corners and the\n // centre are in the h array, and the corresponding coordinates are\n // in the xh and yh arrays. The centre of the box is indexed by 0\n // and the 4 corners by 1 to 4 as shown below.\n // Each triangle is then indexed by the parameter m, and the 3\n // vertices of each triangle are indexed by parameters m1,m2,and\n // m3.\n // It is assumed that the centre of the box is always vertex 2\n // though this isimportant only when all 3 vertices lie exactly on\n // the same contour level, in which case only the side of the box\n // is drawn.\n //\n //\n // vertex 4 +-------------------+ vertex 3\n // | \\ / |\n // | \\ m-3 / |\n // | \\ / |\n // | \\ / |\n // | m=2 X m=2 | the centre is vertex 0\n // | / \\ |\n // | / \\ |\n // | / m=1 \\ |\n // | / \\ |\n // vertex 1 +-------------------+ vertex 2\n //\n //\n //\n // Scan each triangle in the box\n //\n for (m = 1; m <= 4; m++) {\n m1 = m;\n m2 = 0;\n if (m != 4) {\n m3 = m + 1;\n } else {\n m3 = 1;\n }\n case_value = castab[sh[m1] + 1][sh[m2] + 1][sh[m3] + 1];\n if (case_value != 0) {\n switch (case_value) {\n case 1: // Line between vertices 1 and 2\n x1 = xh[m1];\n y1 = yh[m1];\n x2 = xh[m2];\n y2 = yh[m2];\n break;\n case 2: // Line between vertices 2 and 3\n x1 = xh[m2];\n y1 = yh[m2];\n x2 = xh[m3];\n y2 = yh[m3];\n break;\n case 3: // Line between vertices 3 and 1\n x1 = xh[m3];\n y1 = yh[m3];\n x2 = xh[m1];\n y2 = yh[m1];\n break;\n case 4: // Line between vertex 1 and side 2-3\n x1 = xh[m1];\n y1 = yh[m1];\n x2 = xsect(m2, m3);\n y2 = ysect(m2, m3);\n break;\n case 5: // Line between vertex 2 and side 3-1\n x1 = xh[m2];\n y1 = yh[m2];\n x2 = xsect(m3, m1);\n y2 = ysect(m3, m1);\n break;\n case 6: // Line between vertex 3 and side 1-2\n x1 = xh[m3];\n y1 = yh[m3];\n x2 = xsect(m1, m2);\n y2 = ysect(m1, m2);\n break;\n case 7: // Line between sides 1-2 and 2-3\n x1 = xsect(m1, m2);\n y1 = ysect(m1, m2);\n x2 = xsect(m2, m3);\n y2 = ysect(m2, m3);\n break;\n case 8: // Line between sides 2-3 and 3-1\n x1 = xsect(m2, m3);\n y1 = ysect(m2, m3);\n x2 = xsect(m3, m1);\n y2 = ysect(m3, m1);\n break;\n case 9: // Line between sides 3-1 and 1-2\n x1 = xsect(m3, m1);\n y1 = ysect(m3, m1);\n x2 = xsect(m1, m2);\n y2 = ysect(m1, m2);\n break;\n default:\n break;\n }\n // Put your processing code here and comment out the printf\n //printf(\"%f %f %f %f %f\\n\",x1,y1,x2,y2,z[k]);\n drawContour(x1, y1, x2, y2, z[k], k);\n }\n }\n }\n }\n }\n }\n }\n };\n","//https://github.com/jasondavies/conrec.js\n//http://stackoverflow.com/questions/263305/drawing-a-topographical-map\nvar tin = require('turf-tin');\nvar inside = require('turf-inside');\nvar grid = require('turf-grid');\nvar bbox = require('turf-bbox');\nvar planepoint = require('turf-planepoint');\nvar featurecollection = require('turf-helpers').featureCollection;\nvar linestring = require('turf-helpers').lineString;\nvar square = require('turf-square');\nvar Conrec = require('./conrec');\n\n/**\n * Takes {@link Point|points} with z-values and an array of\n * value breaks and generates [isolines](http://en.wikipedia.org/wiki/Isoline).\n *\n * @name isolines\n * @param {FeatureCollection} points input points\n * @param {string} z the property name in `points` from which z-values will be pulled\n * @param {number} resolution resolution of the underlying grid\n * @param {Array} breaks where to draw contours\n * @returns {FeatureCollection} isolines\n * @example\n * // create random points with random\n * // z-values in their properties\n * var points = turf.random('point', 100, {\n * bbox: [0, 30, 20, 50]\n * });\n * for (var i = 0; i < points.features.length; i++) {\n * points.features[i].properties.z = Math.random() * 10;\n * }\n * var breaks = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\n * var isolined = turf.isolines(points, 'z', 15, breaks);\n * //=isolined\n */\nmodule.exports = function (points, z, resolution, breaks) {\n var tinResult = tin(points, z);\n var bboxBBox = bbox(points);\n var squareBBox = square(bboxBBox);\n var gridResult = grid(squareBBox, resolution);\n var data = [];\n\n for (var i = 0; i < gridResult.features.length; i++) {\n var pt = gridResult.features[i];\n for (var j = 0; j < tinResult.features.length; j++) {\n var triangle = tinResult.features[j];\n if (inside(pt, triangle)) {\n pt.properties = {};\n pt.properties[z] = planepoint(pt, triangle);\n }\n }\n }\n\n var depth = Math.sqrt(gridResult.features.length);\n for (var x = 0; x < depth; x++) {\n var xGroup = gridResult.features.slice(x * depth, (x + 1) * depth);\n var xFlat = [];\n\n for (var g = 0; g < xGroup.length; g++) {\n if (xGroup[g].properties) {\n xFlat.push(xGroup[g].properties[z]);\n } else {\n xFlat.push(0);\n }\n }\n data.push(xFlat);\n }\n var interval = (squareBBox[2] - squareBBox[0]) / depth;\n var xCoordinates = [];\n var yCoordinates = [];\n for (var d = 0; d < depth; d++) {\n xCoordinates.push(d * interval + squareBBox[0]);\n yCoordinates.push(d * interval + squareBBox[1]);\n }\n\n var c = new Conrec();\n c.contour(data, 0, resolution, 0, resolution, xCoordinates, yCoordinates, breaks.length, breaks);\n var contourList = c.contourList();\n\n var fc = featurecollection([]);\n contourList.forEach(function (c) {\n if (c.length > 2) {\n var polyCoordinates = [];\n c.forEach(function (coord) {\n polyCoordinates.push([coord.x, coord.y]);\n });\n var poly = linestring(polyCoordinates);\n poly.properties = {};\n poly.properties[z] = c.level;\n\n fc.features.push(poly);\n }\n });\n\n return fc;\n};\n","/**\n * Takes a {@link Polygon|polygon} and returns {@link Point|points} at all self-intersections.\n *\n * @name kinks\n * @param {Feature|Polygon} polygon input polygon\n * @returns {FeatureCollection} self-intersections\n * @example\n * var poly = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [[\n * [-12.034835, 8.901183],\n * [-12.060413, 8.899826],\n * [-12.03638, 8.873199],\n * [-12.059383, 8.871418],\n * [-12.034835, 8.901183]\n * ]]\n * }\n * };\n *\n * var kinks = turf.kinks(poly);\n *\n * var resultFeatures = kinks.intersections.features.concat(poly);\n * var result = {\n * \"type\": \"FeatureCollection\",\n * \"features\": resultFeatures\n * };\n *\n * //=result\n */\n\nvar point = require('turf-helpers').point;\n\nmodule.exports = function (polyIn) {\n var poly;\n var results = {\n type: 'FeatureCollection',\n features: []\n };\n if (polyIn.type === 'Feature') {\n poly = polyIn.geometry;\n } else {\n poly = polyIn;\n }\n poly.coordinates.forEach(function (ring1) {\n poly.coordinates.forEach(function (ring2) {\n for (var i = 0; i < ring1.length - 1; i++) {\n for (var k = 0; k < ring2.length - 1; k++) {\n // don't check adjacent sides of a given ring, since of course they intersect in a vertex.\n if (ring1 === ring2 && (Math.abs(i - k) === 1 || Math.abs(i - k) === ring1.length - 2)) {\n continue;\n }\n\n var intersection = lineIntersects(ring1[i][0], ring1[i][1], ring1[i + 1][0], ring1[i + 1][1],\n ring2[k][0], ring2[k][1], ring2[k + 1][0], ring2[k + 1][1]);\n if (intersection) {\n results.features.push(point([intersection[0], intersection[1]]));\n }\n }\n }\n });\n });\n return results;\n};\n\n\n// modified from http://jsfiddle.net/justin_c_rounds/Gd2S2/light/\nfunction lineIntersects(line1StartX, line1StartY, line1EndX, line1EndY, line2StartX, line2StartY, line2EndX, line2EndY) {\n // if the lines intersect, the result contains the x and y of the intersection (treating the lines as infinite) and booleans for whether line segment 1 or line segment 2 contain the point\n var denominator, a, b, numerator1, numerator2,\n result = {\n x: null,\n y: null,\n onLine1: false,\n onLine2: false\n };\n denominator = ((line2EndY - line2StartY) * (line1EndX - line1StartX)) - ((line2EndX - line2StartX) * (line1EndY - line1StartY));\n if (denominator === 0) {\n if (result.x !== null && result.y !== null) {\n return result;\n } else {\n return false;\n }\n }\n a = line1StartY - line2StartY;\n b = line1StartX - line2StartX;\n numerator1 = ((line2EndX - line2StartX) * a) - ((line2EndY - line2StartY) * b);\n numerator2 = ((line1EndX - line1StartX) * a) - ((line1EndY - line1StartY) * b);\n a = numerator1 / denominator;\n b = numerator2 / denominator;\n\n // if we cast these lines infinitely in both directions, they intersect here:\n result.x = line1StartX + (a * (line1EndX - line1StartX));\n result.y = line1StartY + (a * (line1EndY - line1StartY));\n\n // if line1 is a segment and line2 is infinite, they intersect if:\n if (a >= 0 && a <= 1) {\n result.onLine1 = true;\n }\n // if line2 is a segment and line1 is infinite, they intersect if:\n if (b >= 0 && b <= 1) {\n result.onLine2 = true;\n }\n // if line1 and line2 are segments, they intersect if both of the above are true\n if (result.onLine1 && result.onLine2) {\n return [result.x, result.y];\n } else {\n return false;\n }\n}\n","var distance = require('turf-distance');\nvar point = require('turf-helpers').point;\n\n/**\n * Takes a {@link LineString|line} and measures its length in the specified units.\n *\n * @name lineDistance\n * @param {Feature} line line to measure\n * @param {String} [units=kilometers] can be degrees, radians, miles, or kilometers\n * @return {Number} length of the input line\n * @example\n * var line = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"LineString\",\n * \"coordinates\": [\n * [-77.031669, 38.878605],\n * [-77.029609, 38.881946],\n * [-77.020339, 38.884084],\n * [-77.025661, 38.885821],\n * [-77.021884, 38.889563],\n * [-77.019824, 38.892368]\n * ]\n * }\n * };\n *\n * var length = turf.lineDistance(line, 'miles');\n *\n * //=line\n *\n * //=length\n */\nmodule.exports = function lineDistance(line, units) {\n if (line.type === 'FeatureCollection') {\n return line.features.reduce(function (memo, feature) {\n return memo + lineDistance(feature, units);\n }, 0);\n }\n\n var geometry = line.type === 'Feature' ? line.geometry : line;\n var d, i;\n\n if (geometry.type === 'LineString') {\n return length(geometry.coordinates, units);\n } else if (geometry.type === 'Polygon' || geometry.type === 'MultiLineString') {\n d = 0;\n for (i = 0; i < geometry.coordinates.length; i++) {\n d += length(geometry.coordinates[i], units);\n }\n return d;\n } else if (line.type === 'MultiPolygon') {\n d = 0;\n for (i = 0; i < geometry.coordinates.length; i++) {\n for (var j = 0; j < geometry.coordinates[i].length; j++) {\n d += length(geometry.coordinates[i][j], units);\n }\n }\n return d;\n } else {\n throw new Error('input must be a LineString, MultiLineString, ' +\n 'Polygon, or MultiPolygon Feature or Geometry (or a FeatureCollection ' +\n 'containing only those types)');\n }\n\n};\n\nfunction length(coords, units) {\n var travelled = 0;\n var prevCoords = point(coords[0]);\n var curCoords = point(coords[0]);\n var temp;\n for (var i = 1; i < coords.length; i++) {\n curCoords.geometry.coordinates = coords[i];\n travelled += distance(prevCoords, curCoords, units);\n temp = prevCoords;\n prevCoords = curCoords;\n curCoords = temp;\n }\n return travelled;\n}\n","var linestring = require('turf-helpers').lineString;\nvar pointOnLine = require('turf-point-on-line');\n\n/**\n * Takes a {@link LineString|line}, a start {@link Point}, and a stop point\n * and returns a subsection of the line in-between those points.\n * The start & stop points don't need to fall exactly on the line.\n *\n * This can be useful for extracting only the part of a route between waypoints.\n *\n * @name lineSlice\n * @param {Feature} point1 starting point\n * @param {Feature} point2 stopping point\n * @param {Feature|LineString} line line to slice\n * @return {Feature} sliced line\n * @example\n * var line = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"LineString\",\n * \"coordinates\": [\n * [-77.031669, 38.878605],\n * [-77.029609, 38.881946],\n * [-77.020339, 38.884084],\n * [-77.025661, 38.885821],\n * [-77.021884, 38.889563],\n * [-77.019824, 38.892368]\n * ]\n * }\n * };\n * var start = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-77.029609, 38.881946]\n * }\n * };\n * var stop = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-77.021884, 38.889563]\n * }\n * };\n *\n * var sliced = turf.lineSlice(start, stop, line);\n *\n * //=line\n *\n * //=sliced\n */\n\nmodule.exports = function lineSlice(startPt, stopPt, line) {\n var coords;\n if (line.type === 'Feature') {\n coords = line.geometry.coordinates;\n } else if (line.type === 'LineString') {\n coords = line.coordinates;\n } else {\n throw new Error('input must be a LineString Feature or Geometry');\n }\n\n var startVertex = pointOnLine(line, startPt);\n var stopVertex = pointOnLine(line, stopPt);\n var ends;\n if (startVertex.properties.index <= stopVertex.properties.index) {\n ends = [startVertex, stopVertex];\n } else {\n ends = [stopVertex, startVertex];\n }\n var clipLine = linestring([ends[0].geometry.coordinates], {});\n for (var i = ends[0].properties.index + 1; i < ends[1].properties.index + 1; i++) {\n clipLine.geometry.coordinates.push(coords[i]);\n }\n clipLine.geometry.coordinates.push(ends[1].geometry.coordinates);\n return clipLine;\n};\n","/**\n * Iterate over coordinates in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @param {Object} layer any GeoJSON object\n * @param {Function} callback a method that takes (value)\n * @param {boolean=} excludeWrapCoord whether or not to include\n * the final coordinate of LinearRings that wraps the ring in its iteration.\n * @example\n * var point = { type: 'Point', coordinates: [0, 0] };\n * coordEach(point, function(coords) {\n * // coords is equal to [0, 0]\n * });\n */\nfunction coordEach(layer, callback, excludeWrapCoord) {\n var i, j, k, g, l, geometry, stopG, coords,\n geometryMaybeCollection,\n wrapShrink = 0,\n isGeometryCollection,\n isFeatureCollection = layer.type === 'FeatureCollection',\n isFeature = layer.type === 'Feature',\n stop = isFeatureCollection ? layer.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (i = 0; i < stop; i++) {\n\n geometryMaybeCollection = (isFeatureCollection ? layer.features[i].geometry :\n (isFeature ? layer.geometry : layer));\n isGeometryCollection = geometryMaybeCollection.type === 'GeometryCollection';\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n coords = geometry.coordinates;\n\n wrapShrink = (excludeWrapCoord &&\n (geometry.type === 'Polygon' || geometry.type === 'MultiPolygon')) ?\n 1 : 0;\n\n if (geometry.type === 'Point') {\n callback(coords);\n } else if (geometry.type === 'LineString' || geometry.type === 'MultiPoint') {\n for (j = 0; j < coords.length; j++) callback(coords[j]);\n } else if (geometry.type === 'Polygon' || geometry.type === 'MultiLineString') {\n for (j = 0; j < coords.length; j++)\n for (k = 0; k < coords[j].length - wrapShrink; k++)\n callback(coords[j][k]);\n } else if (geometry.type === 'MultiPolygon') {\n for (j = 0; j < coords.length; j++)\n for (k = 0; k < coords[j].length; k++)\n for (l = 0; l < coords[j][k].length - wrapShrink; l++)\n callback(coords[j][k][l]);\n } else {\n throw new Error('Unknown Geometry Type');\n }\n }\n }\n}\nmodule.exports.coordEach = coordEach;\n\n/**\n * Reduce coordinates in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all coordinates is unnecessary.\n *\n * @param {Object} layer any GeoJSON object\n * @param {Function} callback a method that takes (memo, value) and returns\n * a new memo\n * @param {*} memo the starting value of memo: can be any type.\n * @param {boolean=} excludeWrapCoord whether or not to include\n * the final coordinate of LinearRings that wraps the ring in its iteration.\n * @return {*} combined value\n */\nfunction coordReduce(layer, callback, memo, excludeWrapCoord) {\n coordEach(layer, function (coord) {\n memo = callback(memo, coord);\n }, excludeWrapCoord);\n return memo;\n}\nmodule.exports.coordReduce = coordReduce;\n\n/**\n * Iterate over property objects in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @param {Object} layer any GeoJSON object\n * @param {Function} callback a method that takes (value)\n * @example\n * var point = { type: 'Feature', geometry: null, properties: { foo: 1 } };\n * propEach(point, function(props) {\n * // props is equal to { foo: 1}\n * });\n */\nfunction propEach(layer, callback) {\n var i;\n switch (layer.type) {\n case 'FeatureCollection':\n for (i = 0; i < layer.features.length; i++) {\n callback(layer.features[i].properties);\n }\n break;\n case 'Feature':\n callback(layer.properties);\n break;\n }\n}\nmodule.exports.propEach = propEach;\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @param {Object} layer any GeoJSON object\n * @param {Function} callback a method that takes (memo, coord) and returns\n * a new memo\n * @param {*} memo the starting value of memo: can be any type.\n * @return {*} combined value\n */\nfunction propReduce(layer, callback, memo) {\n propEach(layer, function (prop) {\n memo = callback(memo, prop);\n });\n return memo;\n}\nmodule.exports.propReduce = propReduce;\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @param {Object} layer any GeoJSON object\n * @param {Function} callback a method that takes (value)\n * @example\n * var feature = { type: 'Feature', geometry: null, properties: {} };\n * featureEach(feature, function(feature) {\n * // feature == feature\n * });\n */\nfunction featureEach(layer, callback) {\n if (layer.type === 'Feature') {\n callback(layer);\n } else if (layer.type === 'FeatureCollection') {\n for (var i = 0; i < layer.features.length; i++) {\n callback(layer.features[i]);\n }\n }\n}\nmodule.exports.featureEach = featureEach;\n\n/**\n * Get all coordinates from any GeoJSON object, returning an array of coordinate\n * arrays.\n * @param {Object} layer any GeoJSON object\n * @return {Array>} coordinate position array\n */\nfunction coordAll(layer) {\n var coords = [];\n coordEach(layer, function (coord) {\n coords.push(coord);\n });\n return coords;\n}\nmodule.exports.coordAll = coordAll;\n","var bearing = require('turf-bearing');\nvar destination = require('turf-destination');\nvar distance = require('turf-distance');\n\n/**\n * Takes two {@link Point|points} and returns a point midway between them.\n * The midpoint is calculated geodesically, meaning the curvature of the earth is taken into account.\n *\n * @name midpoint\n * @param {Feature} from first point\n * @param {Feature} to second point\n * @return {Feature} a point midway between `pt1` and `pt2`\n * @example\n * var pt1 = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [144.834823, -37.771257]\n * }\n * };\n * var pt2 = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [145.14244, -37.830937]\n * }\n * };\n *\n * var midpointed = turf.midpoint(pt1, pt2);\n * midpointed.properties['marker-color'] = '#f00';\n *\n *\n * var result = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [pt1, pt2, midpointed]\n * };\n *\n * //=result\n */\nmodule.exports = function (from, to) {\n var dist = distance(from, to, 'miles');\n var heading = bearing(from, to);\n var midpoint = destination(from, dist / 2, heading, 'miles');\n\n return midpoint;\n};\n","var distance = require('turf-distance');\n\n/**\n * Takes a reference {@link Point|point} and a FeatureCollection of Features\n * with Point geometries and returns the\n * point from the FeatureCollection closest to the reference. This calculation\n * is geodesic.\n *\n * @name nearest\n * @param {Feature} targetPoint the reference point\n * @param {FeatureCollection} points against input point set\n * @return {Feature} the closest point in the set to the reference point\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"marker-color\": \"#0f0\"\n * },\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [28.965797, 41.010086]\n * }\n * };\n * var against = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [\n * {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [28.973865, 41.011122]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [28.948459, 41.024204]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [28.938674, 41.013324]\n * }\n * }\n * ]\n * };\n *\n * var nearest = turf.nearest(point, against);\n * nearest.properties['marker-color'] = '#f00';\n *\n * var resultFeatures = against.features.concat(point);\n * var result = {\n * \"type\": \"FeatureCollection\",\n * \"features\": resultFeatures\n * };\n *\n * //=result\n */\nmodule.exports = function (targetPoint, points) {\n var nearestPoint, minDist = Infinity;\n for (var i = 0; i < points.features.length; i++) {\n var distanceToPoint = distance(targetPoint, points.features[i], 'miles');\n if (distanceToPoint < minDist) {\n nearestPoint = points.features[i];\n minDist = distanceToPoint;\n }\n }\n return nearestPoint;\n};\n","/**\n * Takes a triangular plane as a {@link Polygon}\n * and a {@link Point} within that triangle and returns the z-value\n * at that point. The Polygon needs to have properties `a`, `b`, and `c`\n * that define the values at its three corners.\n *\n * @name planepoint\n * @param {Feature} point the Point for which a z-value will be calculated\n * @param {Feature} triangle a Polygon feature with three vertices\n * @return {Number} the z-value for `interpolatedPoint`\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-75.3221, 39.529]\n * }\n * };\n * var point = turf.point([-75.3221, 39.529]);\n * // triangle is a polygon with \"a\", \"b\",\n * // and \"c\" values representing\n * // the values of the coordinates in order.\n * var triangle = {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"a\": 11,\n * \"b\": 122,\n * \"c\": 44\n * },\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [[\n * [-75.1221, 39.57],\n * [-75.58, 39.18],\n * [-75.97, 39.86],\n * [-75.1221, 39.57]\n * ]]\n * }\n * };\n *\n * var features = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [triangle, point]\n * };\n *\n * var zValue = turf.planepoint(point, triangle);\n *\n * //=features\n *\n * //=zValue\n */\nmodule.exports = function (point, triangle) {\n var x = point.geometry.coordinates[0],\n y = point.geometry.coordinates[1],\n x1 = triangle.geometry.coordinates[0][0][0],\n y1 = triangle.geometry.coordinates[0][0][1],\n z1 = triangle.properties.a,\n x2 = triangle.geometry.coordinates[0][1][0],\n y2 = triangle.geometry.coordinates[0][1][1],\n z2 = triangle.properties.b,\n x3 = triangle.geometry.coordinates[0][2][0],\n y3 = triangle.geometry.coordinates[0][2][1],\n z3 = triangle.properties.c;\n\n var z = (z3 * (x - x1) * (y - y2) + z1 * (x - x2) * (y - y3) + z2 * (x - x3) * (y - y1) -\n z2 * (x - x1) * (y - y3) - z3 * (x - x2) * (y - y1) - z1 * (x - x3) * (y - y2)) /\n ((x - x1) * (y - y2) + (x - x2) * (y - y3) + (x - x3) * (y - y1) -\n (x - x1) * (y - y3) - (x - x2) * (y - y1) - (x - x3) * (y - y2));\n\n return z;\n};\n","var point = require('turf-helpers').point;\nvar featurecollection = require('turf-helpers').featureCollection;\nvar distance = require('turf-distance');\n/**\n * Takes a bounding box and a cell depth and returns a set of {@link Point|points} in a grid.\n *\n * @name pointGrid\n * @param {Array} bbox extent in [minX, minY, maxX, maxY] order\n * @param {number} cellSize the distance across each cell\n * @param {string} [units=kilometers] used in calculating cellWidth, can be degrees, radians, miles, or kilometers\n * @return {FeatureCollection} grid of points\n * @example\n * var extent = [-70.823364, -33.553984, -70.473175, -33.302986];\n * var cellWidth = 3;\n * var units = 'miles';\n *\n * var grid = turf.pointGrid(extent, cellWidth, units);\n *\n * //=grid\n */\nmodule.exports = function pointGrid(bbox, cellSize, units) {\n var fc = featurecollection([]);\n var xFraction = cellSize / (distance(point([bbox[0], bbox[1]]), point([bbox[2], bbox[1]]), units));\n var cellWidth = xFraction * (bbox[2] - bbox[0]);\n var yFraction = cellSize / (distance(point([bbox[0], bbox[1]]), point([bbox[0], bbox[3]]), units));\n var cellHeight = yFraction * (bbox[3] - bbox[1]);\n\n var currentX = bbox[0];\n while (currentX <= bbox[2]) {\n var currentY = bbox[1];\n while (currentY <= bbox[3]) {\n fc.features.push(point([currentX, currentY]));\n\n currentY += cellHeight;\n }\n currentX += cellWidth;\n }\n\n return fc;\n};\n","var distance = require('turf-distance');\nvar point = require('turf-helpers').point;\nvar bearing = require('turf-bearing');\nvar destination = require('turf-destination');\n\n/**\n * Takes a {@link Point} and a {@link LineString} and calculates the closest Point on the LineString.\n *\n * @name pointOnLine\n * @param {Feature} line line to snap to\n * @param {Feature} point point to snap from\n * @return {Feature} closest point on the `line` to `point`\n * @example\n * var line = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"LineString\",\n * \"coordinates\": [\n * [-77.031669, 38.878605],\n * [-77.029609, 38.881946],\n * [-77.020339, 38.884084],\n * [-77.025661, 38.885821],\n * [-77.021884, 38.889563],\n * [-77.019824, 38.892368]\n * ]\n * }\n * };\n * var pt = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-77.037076, 38.884017]\n * }\n * };\n *\n * var snapped = turf.pointOnLine(line, pt);\n * snapped.properties['marker-color'] = '#00f'\n *\n * var result = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [line, pt, snapped]\n * };\n *\n * //=result\n */\n\nmodule.exports = function (line, pt) {\n var coords;\n if (line.type === 'Feature') {\n coords = line.geometry.coordinates;\n } else if (line.type === 'LineString') {\n coords = line.coordinates;\n } else {\n throw new Error('input must be a LineString Feature or Geometry');\n }\n\n return pointOnLine(pt, coords);\n};\n\nfunction pointOnLine(pt, coords) {\n var units = 'miles';\n var closestPt = point([Infinity, Infinity], {\n dist: Infinity\n });\n for (var i = 0; i < coords.length - 1; i++) {\n var start = point(coords[i]);\n var stop = point(coords[i + 1]);\n //start\n start.properties.dist = distance(pt, start, units);\n //stop\n stop.properties.dist = distance(pt, stop, units);\n //perpendicular\n var heightDistance = Math.max(start.properties.dist, stop.properties.dist);\n var direction = bearing(start, stop);\n var perpendicularPt1 = destination(pt, heightDistance, direction + 90, units);\n var perpendicularPt2 = destination(pt, heightDistance, direction - 90, units);\n var intersect = lineIntersects(\n perpendicularPt1.geometry.coordinates[0],\n perpendicularPt1.geometry.coordinates[1],\n perpendicularPt2.geometry.coordinates[0],\n perpendicularPt2.geometry.coordinates[1],\n start.geometry.coordinates[0],\n start.geometry.coordinates[1],\n stop.geometry.coordinates[0],\n stop.geometry.coordinates[1]\n );\n var intersectPt;\n if (intersect) {\n intersectPt = point(intersect);\n intersectPt.properties.dist = distance(pt, intersectPt, units);\n }\n\n if (start.properties.dist < closestPt.properties.dist) {\n closestPt = start;\n closestPt.properties.index = i;\n }\n if (stop.properties.dist < closestPt.properties.dist) {\n closestPt = stop;\n closestPt.properties.index = i;\n }\n if (intersectPt && intersectPt.properties.dist < closestPt.properties.dist) {\n closestPt = intersectPt;\n closestPt.properties.index = i;\n }\n }\n\n return closestPt;\n}\n\n// modified from http://jsfiddle.net/justin_c_rounds/Gd2S2/light/\nfunction lineIntersects(line1StartX, line1StartY, line1EndX, line1EndY, line2StartX, line2StartY, line2EndX, line2EndY) {\n // if the lines intersect, the result contains the x and y of the intersection (treating the lines as infinite) and booleans for whether line segment 1 or line segment 2 contain the point\n var denominator, a, b, numerator1, numerator2;\n var result = {\n x: null,\n y: null,\n onLine1: false,\n onLine2: false\n };\n denominator = ((line2EndY - line2StartY) * (line1EndX - line1StartX)) - ((line2EndX - line2StartX) * (line1EndY - line1StartY));\n if (denominator === 0) {\n if (result.x !== null && result.y !== null) {\n return result;\n } else {\n return false;\n }\n }\n a = line1StartY - line2StartY;\n b = line1StartX - line2StartX;\n numerator1 = ((line2EndX - line2StartX) * a) - ((line2EndY - line2StartY) * b);\n numerator2 = ((line1EndX - line1StartX) * a) - ((line1EndY - line1StartY) * b);\n a = numerator1 / denominator;\n b = numerator2 / denominator;\n\n // if we cast these lines infinitely in both directions, they intersect here:\n result.x = line1StartX + (a * (line1EndX - line1StartX));\n result.y = line1StartY + (a * (line1EndY - line1StartY));\n\n // if line1 is a segment and line2 is infinite, they intersect if:\n if (a > 0 && a < 1) {\n result.onLine1 = true;\n }\n // if line2 is a segment and line1 is infinite, they intersect if:\n if (b > 0 && b < 1) {\n result.onLine2 = true;\n }\n // if line1 and line2 are segments, they intersect if both of the above are true\n if (result.onLine1 && result.onLine2) {\n return [result.x, result.y];\n } else {\n return false;\n }\n}\n","var featureCollection = require('turf-helpers').featureCollection;\nvar centroid = require('turf-center');\nvar distance = require('turf-distance');\nvar inside = require('turf-inside');\nvar explode = require('turf-explode');\n\n/**\n * Takes a feature and returns a {@link Point} guaranteed to be on the surface of the feature.\n *\n * * Given a {@link Polygon}, the point will be in the area of the polygon\n * * Given a {@link LineString}, the point will be along the string\n * * Given a {@link Point}, the point will the same as the input\n *\n * @param {(Feature|FeatureCollection)} fc any feature or set of features\n * @returns {Feature} a point on the surface of `input`\n * @example\n * // create a random polygon\n * var polygon = turf.random('polygon');\n *\n * //=polygon\n *\n * var pointOnPolygon = turf.pointOnSurface(polygon);\n *\n* var resultFeatures = polygon.features.concat(pointOnPolygon);\n* var result = {\n* \"type\": \"FeatureCollection\",\n* \"features\": resultFeatures\n* };\n *\n * //=result\n */\nfunction pointOnSurface(fc) {\n // normalize\n if (fc.type !== 'FeatureCollection') {\n if (fc.type !== 'Feature') {\n fc = {\n type: 'Feature',\n geometry: fc,\n properties: {}\n };\n }\n fc = featureCollection([fc]);\n }\n\n //get centroid\n var cent = centroid(fc);\n\n // check to see if centroid is on surface\n var onSurface = false;\n var i = 0;\n while (!onSurface && i < fc.features.length) {\n var geom = fc.features[i].geometry;\n var x, y, x1, y1, x2, y2, k;\n var onLine = false;\n if (geom.type === 'Point') {\n if (cent.geometry.coordinates[0] === geom.coordinates[0] &&\n cent.geometry.coordinates[1] === geom.coordinates[1]) {\n onSurface = true;\n }\n } else if (geom.type === 'MultiPoint') {\n var onMultiPoint = false;\n k = 0;\n while (!onMultiPoint && k < geom.coordinates.length) {\n if (cent.geometry.coordinates[0] === geom.coordinates[k][0] &&\n cent.geometry.coordinates[1] === geom.coordinates[k][1]) {\n onSurface = true;\n onMultiPoint = true;\n }\n k++;\n }\n } else if (geom.type === 'LineString') {\n k = 0;\n while (!onLine && k < geom.coordinates.length - 1) {\n x = cent.geometry.coordinates[0];\n y = cent.geometry.coordinates[1];\n x1 = geom.coordinates[k][0];\n y1 = geom.coordinates[k][1];\n x2 = geom.coordinates[k + 1][0];\n y2 = geom.coordinates[k + 1][1];\n if (pointOnSegment(x, y, x1, y1, x2, y2)) {\n onLine = true;\n onSurface = true;\n }\n k++;\n }\n } else if (geom.type === 'MultiLineString') {\n var j = 0;\n while (j < geom.coordinates.length) {\n onLine = false;\n k = 0;\n var line = geom.coordinates[j];\n while (!onLine && k < line.length - 1) {\n x = cent.geometry.coordinates[0];\n y = cent.geometry.coordinates[1];\n x1 = line[k][0];\n y1 = line[k][1];\n x2 = line[k + 1][0];\n y2 = line[k + 1][1];\n if (pointOnSegment(x, y, x1, y1, x2, y2)) {\n onLine = true;\n onSurface = true;\n }\n k++;\n }\n j++;\n }\n } else if (geom.type === 'Polygon' || geom.type === 'MultiPolygon') {\n var f = {\n type: 'Feature',\n geometry: geom,\n properties: {}\n };\n if (inside(cent, f)) {\n onSurface = true;\n }\n }\n i++;\n }\n if (onSurface) {\n return cent;\n } else {\n var vertices = featureCollection([]);\n for (i = 0; i < fc.features.length; i++) {\n vertices.features = vertices.features.concat(explode(fc.features[i]).features);\n }\n var closestVertex;\n var closestDistance = Infinity;\n for (i = 0; i < vertices.features.length; i++) {\n var dist = distance(cent, vertices.features[i], 'miles');\n if (dist < closestDistance) {\n closestDistance = dist;\n closestVertex = vertices.features[i];\n }\n }\n return closestVertex;\n }\n}\n\nfunction pointOnSegment(x, y, x1, y1, x2, y2) {\n var ab = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n var ap = Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));\n var pb = Math.sqrt((x2 - x) * (x2 - x) + (y2 - y) * (y2 - y));\n if (ab === ap + pb) {\n return true;\n }\n}\n\nmodule.exports = pointOnSurface;\n","/**\n * Takes coordinates and properties (optional) and returns a new {@link Point} feature.\n *\n * @module turf/point\n * @category helper\n * @param {number} longitude position west to east in decimal degrees\n * @param {number} latitude position south to north in decimal degrees\n * @param {Object} properties an Object that is used as the {@link Feature}'s\n * properties\n * @return {Point} a Point feature\n * @example\n * var pt1 = turf.point([-75.343, 39.984]);\n *\n * //=pt1\n */\nvar isArray = Array.isArray || function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\nmodule.exports = function(coordinates, properties) {\n if (!isArray(coordinates)) throw new Error('Coordinates must be an array');\n if (coordinates.length < 2) throw new Error('Coordinates must be at least 2 numbers long');\n return {\n type: \"Feature\",\n geometry: {\n type: \"Point\",\n coordinates: coordinates\n },\n properties: properties || {}\n };\n};\n","var random = require('geojson-random');\n\n/**\n * Generates random {@link GeoJSON} data, including {@link Point|Points} and {@link Polygon|Polygons}, for testing\n * and experimentation.\n *\n * @name random\n * @param {String} [type='point'] type of features desired: 'points' or 'polygons'\n * @param {Number} [count=1] how many geometries should be generated.\n * @param {Object} options options relevant to the feature desired. Can include:\n * @param {Array} options.bbox a bounding box inside of which geometries\n * are placed. In the case of {@link Point} features, they are guaranteed to be within this bounds,\n * while {@link Polygon} features have their centroid within the bounds.\n * @param {Number} [options.num_vertices=10] options.vertices the number of vertices added\n * to polygon features.\n * @param {Number} [options.max_radial_length=10] the total number of decimal\n * degrees longitude or latitude that a polygon can extent outwards to\n * from its center.\n * @return {FeatureCollection} generated random features\n * @example\n * var points = turf.random('points', 100, {\n * bbox: [-70, 40, -60, 60]\n * });\n *\n * //=points\n *\n * var polygons = turf.random('polygons', 4, {\n * bbox: [-70, 40, -60, 60]\n * });\n *\n * //=polygons\n */\nmodule.exports = function (type, count, options) {\n options = options || {};\n count = count || 1;\n switch (type) {\n case 'point':\n case 'points':\n case undefined:\n return random.point(count, options.bbox);\n case 'polygon':\n case 'polygons':\n return random.polygon(\n count,\n options.num_vertices,\n options.max_radial_length,\n options.bbox);\n default:\n throw new Error('Unknown type given: valid options are points and polygons');\n }\n};\n","// http://stackoverflow.com/questions/11935175/sampling-a-random-subset-from-an-array\nvar featureCollection = require('turf-helpers').featureCollection;\n\n/**\n * Takes a {@link FeatureCollection} and returns a FeatureCollection with given number of {@link Feature|features} at random.\n *\n * @name sample\n * @param {FeatureCollection} featurecollection set of input features\n * @param {number} num number of features to select\n * @return {FeatureCollection} a FeatureCollection with `n` features\n * @example\n * var points = turf.random('points', 1000);\n *\n * //=points\n *\n * var sample = turf.sample(points, 10);\n *\n * //=sample\n */\nmodule.exports = function (featurecollection, num) {\n var outFC = featureCollection(getRandomSubarray(featurecollection.features, num));\n return outFC;\n};\n\nfunction getRandomSubarray(arr, size) {\n var shuffled = arr.slice(0), i = arr.length, min = i - size, temp, index;\n while (i-- > min) {\n index = Math.floor((i + 1) * Math.random());\n temp = shuffled[index];\n shuffled[index] = shuffled[i];\n shuffled[i] = temp;\n }\n return shuffled.slice(min);\n}\n","var simplify = require('simplify-js');\n\n// supported GeoJSON geometries, used to check whether to wrap in simpleFeature()\nvar supportedTypes = ['LineString', 'MultiLineString', 'Polygon', 'MultiPolygon'];\n\n/**\n * Takes a {@link LineString} or {@link Polygon} and returns a simplified version. Internally uses [simplify-js](http://mourner.github.io/simplify-js/) to perform simplification.\n *\n * @name simplify\n * @param {Feature<(LineString|Polygon|MultiLineString|MultiPolygon)>|FeatureCollection|GeometryCollection} feature feature to be simplified\n * @param {number} tolerance simplification tolerance\n * @param {boolean} highQuality whether or not to spend more time to create\n * a higher-quality simplification with a different algorithm\n * @return {Feature<(LineString|Polygon|MultiLineString|MultiPolygon)>|FeatureCollection|GeometryCollection} a simplified feature\n * @example\n * var feature = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [[\n * [-70.603637, -33.399918],\n * [-70.614624, -33.395332],\n * [-70.639343, -33.392466],\n * [-70.659942, -33.394759],\n * [-70.683975, -33.404504],\n * [-70.697021, -33.419406],\n * [-70.701141, -33.434306],\n * [-70.700454, -33.446339],\n * [-70.694274, -33.458369],\n * [-70.682601, -33.465816],\n * [-70.668869, -33.472117],\n * [-70.646209, -33.473835],\n * [-70.624923, -33.472117],\n * [-70.609817, -33.468107],\n * [-70.595397, -33.458369],\n * [-70.587158, -33.442901],\n * [-70.587158, -33.426283],\n * [-70.590591, -33.414248],\n * [-70.594711, -33.406224],\n * [-70.603637, -33.399918]\n * ]]\n * }\n * };\n\n * var tolerance = 0.01;\n *\n * var simplified = turf.simplify(\n * feature, tolerance, false);\n *\n * //=feature\n *\n * //=simplified\n */\nmodule.exports = function (feature, tolerance, highQuality) {\n if (feature.type === 'Feature') {\n return simpleFeature(\n simplifyHelper(feature, tolerance, highQuality),\n feature.properties);\n } else if (feature.type === 'FeatureCollection') {\n return {\n type: 'FeatureCollection',\n features: feature.features.map(function (f) {\n var simplified = simplifyHelper(f, tolerance, highQuality);\n\n // we create simpleFeature here because it doesn't apply to GeometryCollection\n // so we can't create it at simplifyHelper()\n if (supportedTypes.indexOf(simplified.type) > -1) {\n return simpleFeature(simplified, f.properties);\n } else {\n return simplified;\n }\n })\n };\n } else if (feature.type === 'GeometryCollection') {\n return {\n type: 'GeometryCollection',\n geometries: feature.geometries.map(function (g) {\n if (supportedTypes.indexOf(g.type) > -1) {\n return simplifyHelper({\n type: 'Feature',\n geometry: g\n }, tolerance, highQuality);\n }\n return g;\n })\n };\n } else {\n return feature;\n }\n};\n\n\nfunction simplifyHelper(feature, tolerance, highQuality) {\n if (feature.geometry.type === 'LineString') {\n return {\n type: 'LineString',\n coordinates: simplifyLine(feature.geometry.coordinates, tolerance, highQuality)\n };\n } else if (feature.geometry.type === 'MultiLineString') {\n return {\n type: 'MultiLineString',\n coordinates: feature.geometry.coordinates.map(function (lines) {\n return simplifyLine(lines, tolerance, highQuality);\n })\n };\n } else if (feature.geometry.type === 'Polygon') {\n return {\n type: 'Polygon',\n coordinates: simplifyPolygon(feature.geometry.coordinates, tolerance, highQuality)\n };\n } else if (feature.geometry.type === 'MultiPolygon') {\n return {\n type: 'MultiPolygon',\n coordinates: feature.geometry.coordinates.map(function (rings) {\n return simplifyPolygon(rings, tolerance, highQuality);\n })\n };\n } else {\n // unsupported geometry type supplied\n return feature;\n }\n}\n\n/*\n* returns true if ring's first coordinate is the same as its last\n*/\nfunction checkValidity(ring) {\n if (ring.length < 3) {\n return false;\n //if the last point is the same as the first, it's not a triangle\n } else if (ring.length === 3 &&\n ((ring[2][0] === ring[0][0]) && (ring[2][1] === ring[0][1]))) {\n return false;\n } else {\n return true;\n }\n}\n\nfunction simpleFeature(geom, properties) {\n return {\n type: 'Feature',\n geometry: geom,\n properties: properties\n };\n}\n\nfunction simplifyLine(coordinates, tolerance, highQuality) {\n return simplify(coordinates.map(function (coord) {\n return {x: coord[0], y: coord[1]};\n }), tolerance, highQuality).map(function (coords) {\n return [coords.x, coords.y];\n });\n}\n\nfunction simplifyPolygon(coordinates, tolerance, highQuality) {\n return coordinates.map(function (ring) {\n var pts = ring.map(function (coord) {\n return {x: coord[0], y: coord[1]};\n });\n if (pts.length < 4) {\n throw new Error('Invalid polygon');\n }\n var simpleRing = simplify(pts, tolerance, highQuality).map(function (coords) {\n return [coords.x, coords.y];\n });\n //remove 1 percent of tolerance until enough points to make a triangle\n while (!checkValidity(simpleRing)) {\n tolerance -= tolerance * 0.01;\n simpleRing = simplify(pts, tolerance, highQuality).map(function (coords) {\n return [coords.x, coords.y];\n });\n }\n if (\n (simpleRing[simpleRing.length - 1][0] !== simpleRing[0][0]) ||\n (simpleRing[simpleRing.length - 1][1] !== simpleRing[0][1])) {\n simpleRing.push(simpleRing[0]);\n }\n return simpleRing;\n });\n}\n","var featurecollection = require('turf-helpers').featureCollection;\nvar point = require('turf-helpers').point;\nvar polygon = require('turf-helpers').polygon;\nvar distance = require('turf-distance');\n\n/**\n * Takes a bounding box and a cell depth and returns a set of square {@link Polygon|polygons} in a grid.\n *\n * @name squareGrid\n * @param {Array} bbox extent in [minX, minY, maxX, maxY] order\n * @param {number} cellSize width of each cell\n * @param {string} units units to use for cellWidth\n * @return {FeatureCollection} grid a grid of polygons\n * @example\n * var extent = [-77.3876953125,38.71980474264239,-76.9482421875,39.027718840211605];\n * var cellWidth = 10;\n * var units = 'miles';\n *\n * var squareGrid = turf.squareGrid(extent, cellWidth, units);\n *\n * //=squareGrid\n */\nmodule.exports = function squareGrid(bbox, cellSize, units) {\n var fc = featurecollection([]);\n var xFraction = cellSize / (distance(point([bbox[0], bbox[1]]), point([bbox[2], bbox[1]]), units));\n var cellWidth = xFraction * (bbox[2] - bbox[0]);\n var yFraction = cellSize / (distance(point([bbox[0], bbox[1]]), point([bbox[0], bbox[3]]), units));\n var cellHeight = yFraction * (bbox[3] - bbox[1]);\n\n var currentX = bbox[0];\n while (currentX <= bbox[2]) {\n var currentY = bbox[1];\n while (currentY <= bbox[3]) {\n var cellPoly = polygon([[\n [currentX, currentY],\n [currentX, currentY + cellHeight],\n [currentX + cellWidth, currentY + cellHeight],\n [currentX + cellWidth, currentY],\n [currentX, currentY]\n ]]);\n fc.features.push(cellPoly);\n\n currentY += cellHeight;\n }\n currentX += cellWidth;\n }\n\n return fc;\n};\n","var distance = require('turf-distance');\n\n/**\n * Takes a bounding box and calculates the minimum square bounding box that\n * would contain the input.\n *\n * @name square\n * @param {Array} bbox a bounding box\n * @return {Array} a square surrounding `bbox`\n * @example\n * var bbox = [-20,-20,-15,0];\n *\n * var squared = turf.square(bbox);\n *\n * var features = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [\n * turf.bboxPolygon(bbox),\n * turf.bboxPolygon(squared)\n * ]\n * };\n *\n * //=features\n */\nmodule.exports = function (bbox) {\n var horizontalDistance = distance(bbox.slice(0, 2), [bbox[2], bbox[1]], 'miles');\n var verticalDistance = distance(bbox.slice(0, 2), [bbox[0], bbox[3]], 'miles');\n if (horizontalDistance >= verticalDistance) {\n var verticalMidpoint = (bbox[1] + bbox[3]) / 2;\n return [\n bbox[0],\n verticalMidpoint - ((bbox[2] - bbox[0]) / 2),\n bbox[2],\n verticalMidpoint + ((bbox[2] - bbox[0]) / 2)\n ];\n } else {\n var horizontalMidpoint = (bbox[0] + bbox[2]) / 2;\n return [\n horizontalMidpoint - ((bbox[3] - bbox[1]) / 2),\n bbox[1],\n horizontalMidpoint + ((bbox[3] - bbox[1]) / 2),\n bbox[3]\n ];\n }\n};\n","var inside = require('turf-inside');\n\n/**\n * Takes a set of {@link Point|points} and a set of {@link Polygon|polygons} and performs a spatial join.\n *\n * @name tag\n * @param {FeatureCollection} points input points\n * @param {FeatureCollection} polygons input polygons\n * @param {string} field property in `polygons` to add to joined Point features\n * @param {string} outField property in `points` in which to store joined property from `polygons\n * @return {FeatureCollection} points with `containingPolyId` property containing values from `polyId`\n * @example\n * var bbox = [0, 0, 10, 10];\n * // create a triangular grid of polygons\n * var triangleGrid = turf.triangleGrid(bbox, 50, 'miles');\n * triangleGrid.features.forEach(function(f) {\n * f.properties.fill = '#' +\n * (~~(Math.random() * 16)).toString(16) +\n * (~~(Math.random() * 16)).toString(16) +\n * (~~(Math.random() * 16)).toString(16);\n * f.properties.stroke = 0;\n * f.properties['fill-opacity'] = 1;\n * });\n * var randomPoints = turf.random('point', 30, {\n * bbox: bbox\n * });\n * var both = turf.featurecollection(\n * triangleGrid.features.concat(randomPoints.features));\n *\n * //=both\n *\n * var tagged = turf.tag(randomPoints, triangleGrid,\n * 'fill', 'marker-color');\n *\n * //=tagged\n */\nmodule.exports = function (points, polygons, field, outField) {\n // prevent mutations\n points = JSON.parse(JSON.stringify(points));\n polygons = JSON.parse(JSON.stringify(polygons));\n points.features.forEach(function (pt) {\n if (!pt.properties) {\n pt.properties = {};\n }\n polygons.features.forEach(function (poly) {\n if (pt.properties[outField] === undefined) {\n var isInside = inside(pt, poly);\n if (isInside) {\n pt.properties[outField] = poly.properties[field];\n }\n }\n });\n });\n return points;\n};\n","var polygon = require('turf-helpers').polygon;\nvar earcut = require('earcut');\n\n/**\n * Tesselates a {@link Feature} into a {@link FeatureCollection} of triangles\n * using [earcut](https://github.com/mapbox/earcut).\n *\n * @name tesselate\n * @param {Feature} polygon the polygon to tesselate\n * @returns {FeatureCollection} a geometrycollection feature\n * @example\n * var polygon = {\"type\":\"Feature\",\"id\":\"USA-CA\",\"properties\":{\"name\":\"California\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-123.233256,42.006186],[-122.378853,42.011663],[-121.037003,41.995232],[-120.001861,41.995232],[-119.996384,40.264519],[-120.001861,38.999346],[-118.71478,38.101128],[-117.498899,37.21934],[-116.540435,36.501861],[-115.85034,35.970598],[-114.634459,35.00118],[-114.634459,34.87521],[-114.470151,34.710902],[-114.333228,34.448009],[-114.136058,34.305608],[-114.256551,34.174162],[-114.415382,34.108438],[-114.535874,33.933176],[-114.497536,33.697668],[-114.524921,33.54979],[-114.727567,33.40739],[-114.661844,33.034958],[-114.524921,33.029481],[-114.470151,32.843265],[-114.524921,32.755634],[-114.72209,32.717295],[-116.04751,32.624187],[-117.126467,32.536556],[-117.24696,32.668003],[-117.252437,32.876127],[-117.329114,33.122589],[-117.471515,33.297851],[-117.7837,33.538836],[-118.183517,33.763391],[-118.260194,33.703145],[-118.413548,33.741483],[-118.391641,33.840068],[-118.566903,34.042715],[-118.802411,33.998899],[-119.218659,34.146777],[-119.278905,34.26727],[-119.558229,34.415147],[-119.875891,34.40967],[-120.138784,34.475393],[-120.472878,34.448009],[-120.64814,34.579455],[-120.609801,34.858779],[-120.670048,34.902595],[-120.631709,35.099764],[-120.894602,35.247642],[-120.905556,35.450289],[-121.004141,35.461243],[-121.168449,35.636505],[-121.283465,35.674843],[-121.332757,35.784382],[-121.716143,36.195153],[-121.896882,36.315645],[-121.935221,36.638785],[-121.858544,36.6114],[-121.787344,36.803093],[-121.929744,36.978355],[-122.105006,36.956447],[-122.335038,37.115279],[-122.417192,37.241248],[-122.400761,37.361741],[-122.515777,37.520572],[-122.515777,37.783465],[-122.329561,37.783465],[-122.406238,38.15042],[-122.488392,38.112082],[-122.504823,37.931343],[-122.701993,37.893004],[-122.937501,38.029928],[-122.97584,38.265436],[-123.129194,38.451652],[-123.331841,38.566668],[-123.44138,38.698114],[-123.737134,38.95553],[-123.687842,39.032208],[-123.824765,39.366301],[-123.764519,39.552517],[-123.85215,39.831841],[-124.109566,40.105688],[-124.361506,40.259042],[-124.410798,40.439781],[-124.158859,40.877937],[-124.109566,41.025814],[-124.158859,41.14083],[-124.065751,41.442061],[-124.147905,41.715908],[-124.257444,41.781632],[-124.213628,42.000709],[-123.233256,42.006186]]]}};\n *\n * var triangles = turf.tesselate(polygon);\n *\n * //=triangles\n */\n\nmodule.exports = function (poly) {\n if (!poly.geometry || (poly.geometry.type !== 'Polygon' && poly.geometry.type !== 'MultiPolygon')) {\n throw new Error('input must be a Polygon or MultiPolygon');\n }\n\n var fc = {type: 'FeatureCollection', features: []};\n\n if (poly.geometry.type === 'Polygon') {\n fc.features = processPolygon(poly.geometry.coordinates);\n } else {\n poly.geometry.coordinates.forEach(function (coordinates) {\n fc.features = fc.features.concat(processPolygon(coordinates));\n });\n }\n\n return fc;\n};\n\nfunction processPolygon(coordinates) {\n var data = flattenCoords(coordinates);\n var dim = 2;\n var result = earcut(data.vertices, data.holes, dim);\n\n var features = [];\n var vertices = [];\n\n result.forEach(function (vert, i) {\n var index = result[i];\n vertices.push([data.vertices[index * dim], data.vertices[index * dim + 1]]);\n });\n\n for (var i = 0; i < vertices.length; i += 3) {\n var coords = vertices.slice(i, i + 3);\n coords.push(vertices[i]);\n features.push(polygon([coords]));\n }\n\n return features;\n}\n\nfunction flattenCoords(data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n\n return result;\n}\n","//http://en.wikipedia.org/wiki/Delaunay_triangulation\n//https://github.com/ironwallaby/delaunay\nvar polygon = require('turf-helpers').polygon;\nvar featurecollection = require('turf-helpers').featureCollection;\n\n/**\n * Takes a set of {@link Point|points} and the name of a z-value property and\n * creates a [Triangulated Irregular Network](http://en.wikipedia.org/wiki/Triangulated_irregular_network),\n * or a TIN for short, returned as a collection of Polygons. These are often used\n * for developing elevation contour maps or stepped heat visualizations.\n *\n * This triangulates the points, as well as adds properties called `a`, `b`,\n * and `c` representing the value of the given `propertyName` at each of\n * the points that represent the corners of the triangle.\n *\n * @name tin\n * @param {FeatureCollection} points input points\n * @param {String=} z name of the property from which to pull z values\n * This is optional: if not given, then there will be no extra data added to the derived triangles.\n * @return {FeatureCollection} TIN output\n * @example\n * // generate some random point data\n * var points = turf.random('points', 30, {\n * bbox: [50, 30, 70, 50]\n * });\n * //=points\n * // add a random property to each point between 0 and 9\n * for (var i = 0; i < points.features.length; i++) {\n * points.features[i].properties.z = ~~(Math.random() * 9);\n * }\n * var tin = turf.tin(points, 'z')\n * for (var i = 0; i < tin.features.length; i++) {\n * var properties = tin.features[i].properties;\n * // roughly turn the properties of each\n * // triangle into a fill color\n * // so we can visualize the result\n * properties.fill = '#' + properties.a +\n * properties.b + properties.c;\n * }\n * //=tin\n */\nmodule.exports = function (points, z) {\n //break down points\n return featurecollection(triangulate(points.features.map(function (p) {\n var point = {\n x: p.geometry.coordinates[0],\n y: p.geometry.coordinates[1]\n };\n if (z) point.z = p.properties[z];\n return point;\n })).map(function (triangle) {\n return polygon([[\n [triangle.a.x, triangle.a.y],\n [triangle.b.x, triangle.b.y],\n [triangle.c.x, triangle.c.y],\n [triangle.a.x, triangle.a.y]\n ]], {\n a: triangle.a.z,\n b: triangle.b.z,\n c: triangle.c.z\n });\n }));\n};\n\nfunction Triangle(a, b, c) {\n this.a = a;\n this.b = b;\n this.c = c;\n\n var A = b.x - a.x,\n B = b.y - a.y,\n C = c.x - a.x,\n D = c.y - a.y,\n E = A * (a.x + b.x) + B * (a.y + b.y),\n F = C * (a.x + c.x) + D * (a.y + c.y),\n G = 2 * (A * (c.y - b.y) - B * (c.x - b.x)),\n minx, miny, dx, dy;\n\n // If the points of the triangle are collinear, then just find the\n // extremes and use the midpoint as the center of the circumcircle.\n if (Math.abs(G) < 0.000001) {\n minx = Math.min(a.x, b.x, c.x);\n miny = Math.min(a.y, b.y, c.y);\n dx = (Math.max(a.x, b.x, c.x) - minx) * 0.5;\n dy = (Math.max(a.y, b.y, c.y) - miny) * 0.5;\n\n this.x = minx + dx;\n this.y = miny + dy;\n this.r = dx * dx + dy * dy;\n } else {\n this.x = (D * E - B * F) / G;\n this.y = (A * F - C * E) / G;\n dx = this.x - a.x;\n dy = this.y - a.y;\n this.r = dx * dx + dy * dy;\n }\n}\n\nfunction byX(a, b) {\n return b.x - a.x;\n}\n\nfunction dedup(edges) {\n var j = edges.length,\n a, b, i, m, n;\n\n outer:\n while (j) {\n b = edges[--j];\n a = edges[--j];\n i = j;\n while (i) {\n n = edges[--i];\n m = edges[--i];\n if ((a === m && b === n) || (a === n && b === m)) {\n edges.splice(j, 2);\n edges.splice(i, 2);\n j -= 2;\n continue outer;\n }\n }\n }\n}\n\nfunction triangulate(vertices) {\n // Bail if there aren't enough vertices to form any triangles.\n if (vertices.length < 3)\n return [];\n\n // Ensure the vertex array is in order of descending X coordinate\n // (which is needed to ensure a subquadratic runtime), and then find\n // the bounding box around the points.\n vertices.sort(byX);\n\n var i = vertices.length - 1,\n xmin = vertices[i].x,\n xmax = vertices[0].x,\n ymin = vertices[i].y,\n ymax = ymin;\n\n while (i--) {\n if (vertices[i].y < ymin)\n ymin = vertices[i].y;\n if (vertices[i].y > ymax)\n ymax = vertices[i].y;\n }\n\n //Find a supertriangle, which is a triangle that surrounds all the\n //vertices. This is used like something of a sentinel value to remove\n //cases in the main algorithm, and is removed before we return any\n // results.\n\n // Once found, put it in the \"open\" list. (The \"open\" list is for\n // triangles who may still need to be considered; the \"closed\" list is\n // for triangles which do not.)\n var dx = xmax - xmin,\n dy = ymax - ymin,\n dmax = (dx > dy) ? dx : dy,\n xmid = (xmax + xmin) * 0.5,\n ymid = (ymax + ymin) * 0.5,\n open = [\n new Triangle({\n x: xmid - 20 * dmax,\n y: ymid - dmax,\n __sentinel: true\n }, {\n x: xmid,\n y: ymid + 20 * dmax,\n __sentinel: true\n }, {\n x: xmid + 20 * dmax,\n y: ymid - dmax,\n __sentinel: true\n }\n )],\n closed = [],\n edges = [],\n j, a, b;\n\n // Incrementally add each vertex to the mesh.\n i = vertices.length;\n while (i--) {\n // For each open triangle, check to see if the current point is\n // inside it's circumcircle. If it is, remove the triangle and add\n // it's edges to an edge list.\n edges.length = 0;\n j = open.length;\n while (j--) {\n // If this point is to the right of this triangle's circumcircle,\n // then this triangle should never get checked again. Remove it\n // from the open list, add it to the closed list, and skip.\n dx = vertices[i].x - open[j].x;\n if (dx > 0 && dx * dx > open[j].r) {\n closed.push(open[j]);\n open.splice(j, 1);\n continue;\n }\n\n // If not, skip this triangle.\n dy = vertices[i].y - open[j].y;\n if (dx * dx + dy * dy > open[j].r)\n continue;\n\n // Remove the triangle and add it's edges to the edge list.\n edges.push(\n open[j].a, open[j].b,\n open[j].b, open[j].c,\n open[j].c, open[j].a\n );\n open.splice(j, 1);\n }\n\n // Remove any doubled edges.\n dedup(edges);\n\n // Add a new triangle for each edge.\n j = edges.length;\n while (j) {\n b = edges[--j];\n a = edges[--j];\n open.push(new Triangle(a, b, vertices[i]));\n }\n }\n\n // Copy any remaining open triangles to the closed list, and then\n // remove any triangles that share a vertex with the supertriangle.\n Array.prototype.push.apply(closed, open);\n\n i = closed.length;\n while (i--)\n if (closed[i].a.__sentinel ||\n closed[i].b.__sentinel ||\n closed[i].c.__sentinel)\n closed.splice(i, 1);\n\n return closed;\n}\n","var featurecollection = require('turf-helpers').featureCollection;\nvar polygon = require('turf-helpers').polygon;\nvar distance = require('turf-distance');\n\n/**\n * Takes a bounding box and a cell depth and returns a set of triangular {@link Polygon|polygons} in a grid.\n *\n * @name triangleGrid\n * @param {Array} bbox extent in [minX, minY, maxX, maxY] order\n * @param {number} cellSize dimension of each cell\n * @param {string} units units to use for cellWidth\n * @return {FeatureCollection} grid of polygons\n * @example\n * var extent = [-77.3876953125,38.71980474264239,-76.9482421875,39.027718840211605];\n * var cellWidth = 10;\n * var units = 'miles';\n *\n * var triangleGrid = turf.triangleGrid(extent, cellWidth, units);\n *\n * //=triangleGrid\n */\nmodule.exports = function (bbox, cellSize, units) {\n var fc = featurecollection([]);\n var xFraction = cellSize / (distance([bbox[0], bbox[1]], [bbox[2], bbox[1]], units));\n var cellWidth = xFraction * (bbox[2] - bbox[0]);\n var yFraction = cellSize / (distance([bbox[0], bbox[1]], [bbox[0], bbox[3]], units));\n var cellHeight = yFraction * (bbox[3] - bbox[1]);\n\n var xi = 0;\n var currentX = bbox[0];\n while (currentX <= bbox[2]) {\n var yi = 0;\n var currentY = bbox[1];\n while (currentY <= bbox[3]) {\n if (xi % 2 === 0 && yi % 2 === 0) {\n fc.features.push(polygon([[\n [currentX, currentY],\n [currentX, currentY + cellHeight],\n [currentX + cellWidth, currentY],\n [currentX, currentY]\n ]]), polygon([[\n [currentX, currentY + cellHeight],\n [currentX + cellWidth, currentY + cellHeight],\n [currentX + cellWidth, currentY],\n [currentX, currentY + cellHeight]\n ]]));\n } else if (xi % 2 === 0 && yi % 2 === 1) {\n fc.features.push(polygon([[\n [currentX, currentY],\n [currentX + cellWidth, currentY + cellHeight],\n [currentX + cellWidth, currentY],\n [currentX, currentY]\n ]]), polygon([[\n [currentX, currentY],\n [currentX, currentY + cellHeight],\n [currentX + cellWidth, currentY + cellHeight],\n [currentX, currentY]\n ]]));\n } else if (yi % 2 === 0 && xi % 2 === 1) {\n fc.features.push(polygon([[\n [currentX, currentY],\n [currentX, currentY + cellHeight],\n [currentX + cellWidth, currentY + cellHeight],\n [currentX, currentY]\n ]]), polygon([[\n [currentX, currentY],\n [currentX + cellWidth, currentY + cellHeight],\n [currentX + cellWidth, currentY],\n [currentX, currentY]\n ]]));\n } else if (yi % 2 === 1 && xi % 2 === 1) {\n fc.features.push(polygon([[\n [currentX, currentY],\n [currentX, currentY + cellHeight],\n [currentX + cellWidth, currentY],\n [currentX, currentY]\n ]]), polygon([[\n [currentX, currentY + cellHeight],\n [currentX + cellWidth, currentY + cellHeight],\n [currentX + cellWidth, currentY],\n [currentX, currentY + cellHeight]\n ]]));\n }\n currentY += cellHeight;\n yi++;\n }\n xi++;\n currentX += cellWidth;\n }\n return fc;\n};\n\n","// look here for help http://svn.osgeo.org/grass/grass/branches/releasebranch_6_4/vector/v.overlay/main.c\n//must be array of polygons\n\n// depend on jsts for now https://github.com/bjornharrtell/jsts/blob/master/examples/overlay.html\n\nvar jsts = require('jsts');\n\n/**\n * Takes two {@link Polygon|polygons} and returns a combined polygon. If the input polygons are not contiguous, this function returns a {@link MultiPolygon} feature.\n *\n * @name union\n * @param {Feature} poly1 input polygon\n * @param {Feature} poly2 another input polygon\n * @return {Feature<(Polygon|MultiPolygon)>} a combined {@link Polygon} or {@link MultiPolygon} feature\n * @example\n * var poly1 = {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"fill\": \"#0f0\"\n * },\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [[\n * [-82.574787, 35.594087],\n * [-82.574787, 35.615581],\n * [-82.545261, 35.615581],\n * [-82.545261, 35.594087],\n * [-82.574787, 35.594087]\n * ]]\n * }\n * };\n * var poly2 = {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"fill\": \"#00f\"\n * },\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [[\n * [-82.560024, 35.585153],\n * [-82.560024, 35.602602],\n * [-82.52964, 35.602602],\n * [-82.52964, 35.585153],\n * [-82.560024, 35.585153]\n * ]]\n * }\n * };\n * var polygons = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [poly1, poly2]\n * };\n *\n * var union = turf.union(poly1, poly2);\n *\n * //=polygons\n *\n * //=union\n */\nmodule.exports = function (poly1, poly2) {\n var reader = new jsts.io.GeoJSONReader();\n var a = reader.read(JSON.stringify(poly1.geometry));\n var b = reader.read(JSON.stringify(poly2.geometry));\n var union = a.union(b);\n var writer = new jsts.io.GeoJSONWriter();\n\n union = writer.write(union);\n return {\n type: 'Feature',\n geometry: union,\n properties: poly1.properties\n };\n};\n","var inside = require('turf-inside');\nvar featureCollection = require('turf-helpers').featureCollection;\n\n/**\n * Takes a set of {@link Point|points} and a set of {@link Polygon|polygons} and returns the points that fall within the polygons.\n *\n * @name within\n * @param {FeatureCollection} points input points\n * @param {FeatureCollection} polygons input polygons\n * @return {FeatureCollection} points that land within at least one polygon\n * @example\n * var searchWithin = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [\n * {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [[\n * [-46.653,-23.543],\n * [-46.634,-23.5346],\n * [-46.613,-23.543],\n * [-46.614,-23.559],\n * [-46.631,-23.567],\n * [-46.653,-23.560],\n * [-46.653,-23.543]\n * ]]\n * }\n * }\n * ]\n * };\n * var points = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [\n * {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-46.6318, -23.5523]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-46.6246, -23.5325]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-46.6062, -23.5513]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-46.663, -23.554]\n * }\n * }, {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-46.643, -23.557]\n * }\n * }\n * ]\n * };\n *\n * var ptsWithin = turf.within(points, searchWithin);\n *\n * //=points\n *\n * //=searchWithin\n *\n * //=ptsWithin\n */\nmodule.exports = function (points, polygons) {\n var pointsWithin = featureCollection([]);\n for (var i = 0; i < polygons.features.length; i++) {\n for (var j = 0; j < points.features.length; j++) {\n var isInside = inside(points.features[j], polygons.features[i]);\n if (isInside) {\n pointsWithin.features.push(points.features[j]);\n }\n }\n }\n return pointsWithin;\n};\n","/*eslint global-require: 0*/\n\n/**\n * Turf is a modular geospatial analysis engine written in JavaScript. It performs geospatial\n * processing tasks with GeoJSON data and can be run on a server or in a browser.\n *\n * @module turf\n * @summary Geospatial analysis for JavaScript\n */\nmodule.exports = {\n isolines: require('turf-isolines'),\n convex: require('turf-convex'),\n within: require('turf-within'),\n concave: require('turf-concave'),\n difference: require('turf-difference'),\n collect: require('turf-collect'),\n flip: require('turf-flip'),\n simplify: require('turf-simplify'),\n bezier: require('turf-bezier'),\n tag: require('turf-tag'),\n sample: require('turf-sample'),\n envelope: require('turf-envelope'),\n square: require('turf-square'),\n midpoint: require('turf-midpoint'),\n buffer: require('turf-buffer'),\n center: require('turf-center'),\n centroid: require('turf-centroid'),\n combine: require('turf-combine'),\n distance: require('turf-distance'),\n explode: require('turf-explode'),\n bbox: require('turf-bbox'),\n tesselate: require('turf-tesselate'),\n bboxPolygon: require('turf-bbox-polygon'),\n inside: require('turf-inside'),\n intersect: require('turf-intersect'),\n nearest: require('turf-nearest'),\n planepoint: require('turf-planepoint'),\n random: require('turf-random'),\n tin: require('turf-tin'),\n union: require('turf-union'),\n bearing: require('turf-bearing'),\n destination: require('turf-destination'),\n kinks: require('turf-kinks'),\n pointOnSurface: require('turf-point-on-surface'),\n area: require('turf-area'),\n along: require('turf-along'),\n lineDistance: require('turf-line-distance'),\n lineSlice: require('turf-line-slice'),\n pointOnLine: require('turf-point-on-line'),\n pointGrid: require('turf-point-grid'),\n squareGrid: require('turf-square-grid'),\n triangleGrid: require('turf-triangle-grid'),\n hexGrid: require('turf-hex-grid')\n};\n\nvar helpers = require('turf-helpers');\n\nmodule.exports.point = helpers.point;\nmodule.exports.polygon = helpers.polygon;\nmodule.exports.lineString = helpers.lineString;\nmodule.exports.multiPoint = helpers.multiPoint;\nmodule.exports.multiPolygon = helpers.multiPolygon;\nmodule.exports.multiLineString = helpers.multiLineString;\nmodule.exports.feature = helpers.feature;\nmodule.exports.featureCollection = helpers.featureCollection;\nmodule.exports.geometryCollection = helpers.geometryCollection;\n","\"use strict\"\n\nmodule.exports = twoProduct\n\nvar SPLITTER = +(Math.pow(2, 27) + 1.0)\n\nfunction twoProduct(a, b, result) {\n var x = a * b\n\n var c = SPLITTER * a\n var abig = c - a\n var ahi = c - abig\n var alo = a - ahi\n\n var d = SPLITTER * b\n var bbig = d - b\n var bhi = d - bbig\n var blo = b - bhi\n\n var err1 = x - (ahi * bhi)\n var err2 = err1 - (alo * bhi)\n var err3 = err2 - (ahi * blo)\n\n var y = alo * blo - err3\n\n if(result) {\n result[0] = y\n result[1] = x\n return result\n }\n\n return [ y, x ]\n}","\"use strict\"\n\nmodule.exports = fastTwoSum\n\nfunction fastTwoSum(a, b, result) {\n\tvar x = a + b\n\tvar bv = x - a\n\tvar av = x - bv\n\tvar br = b - bv\n\tvar ar = a - av\n\tif(result) {\n\t\tresult[0] = ar + br\n\t\tresult[1] = x\n\t\treturn result\n\t}\n\treturn [ar+br, x]\n}","\"use strict\"; \"use restrict\";\n\nmodule.exports = UnionFind;\n\nfunction UnionFind(count) {\n this.roots = new Array(count);\n this.ranks = new Array(count);\n \n for(var i=0; i tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-102.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-102.use[2]!../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-102.use[3]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-102.use[4]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-button.vue?vue&type=style&index=0&id=53345ef7&prod&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"333bb8d1\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-form-wrapper.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./vs-form-wrapper.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vs-form-wrapper.vue?vue&type=template&id=4644ad8e&scoped=true\"\nimport script from \"./vs-form-wrapper.vue?vue&type=script&lang=js\"\nexport * from \"./vs-form-wrapper.vue?vue&type=script&lang=js\"\nimport style0 from \"./vs-form-wrapper.vue?vue&type=style&index=0&id=4644ad8e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4644ad8e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"editor\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// ::- Persistent data structure representing an ordered mapping from\n// strings to values, with some convenient update methods.\nfunction OrderedMap(content) {\n this.content = content;\n}\n\nOrderedMap.prototype = {\n constructor: OrderedMap,\n\n find: function(key) {\n for (var i = 0; i < this.content.length; i += 2)\n if (this.content[i] === key) return i\n return -1\n },\n\n // :: (string) → ?any\n // Retrieve the value stored under `key`, or return undefined when\n // no such key exists.\n get: function(key) {\n var found = this.find(key);\n return found == -1 ? undefined : this.content[found + 1]\n },\n\n // :: (string, any, ?string) → OrderedMap\n // Create a new map by replacing the value of `key` with a new\n // value, or adding a binding to the end of the map. If `newKey` is\n // given, the key of the binding will be replaced with that key.\n update: function(key, value, newKey) {\n var self = newKey && newKey != key ? this.remove(newKey) : this;\n var found = self.find(key), content = self.content.slice();\n if (found == -1) {\n content.push(newKey || key, value);\n } else {\n content[found + 1] = value;\n if (newKey) content[found] = newKey;\n }\n return new OrderedMap(content)\n },\n\n // :: (string) → OrderedMap\n // Return a map with the given key removed, if it existed.\n remove: function(key) {\n var found = this.find(key);\n if (found == -1) return this\n var content = this.content.slice();\n content.splice(found, 2);\n return new OrderedMap(content)\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the start of the map.\n addToStart: function(key, value) {\n return new OrderedMap([key, value].concat(this.remove(key).content))\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the end of the map.\n addToEnd: function(key, value) {\n var content = this.remove(key).content.slice();\n content.push(key, value);\n return new OrderedMap(content)\n },\n\n // :: (string, string, any) → OrderedMap\n // Add a key after the given key. If `place` is not found, the new\n // key is added to the end.\n addBefore: function(place, key, value) {\n var without = this.remove(key), content = without.content.slice();\n var found = without.find(place);\n content.splice(found == -1 ? content.length : found, 0, key, value);\n return new OrderedMap(content)\n },\n\n // :: ((key: string, value: any))\n // Call the given function for each key/value pair in the map, in\n // order.\n forEach: function(f) {\n for (var i = 0; i < this.content.length; i += 2)\n f(this.content[i], this.content[i + 1]);\n },\n\n // :: (union) → OrderedMap\n // Create a new map by prepending the keys in this map that don't\n // appear in `map` before the keys in `map`.\n prepend: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(map.content.concat(this.subtract(map).content))\n },\n\n // :: (union) → OrderedMap\n // Create a new map by appending the keys in this map that don't\n // appear in `map` after the keys in `map`.\n append: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(this.subtract(map).content.concat(map.content))\n },\n\n // :: (union) → OrderedMap\n // Create a map containing all the keys in this map that don't\n // appear in `map`.\n subtract: function(map) {\n var result = this;\n map = OrderedMap.from(map);\n for (var i = 0; i < map.content.length; i += 2)\n result = result.remove(map.content[i]);\n return result\n },\n\n // :: () → Object\n // Turn ordered map into a plain object.\n toObject: function() {\n var result = {};\n this.forEach(function(key, value) { result[key] = value; });\n return result\n },\n\n // :: number\n // The amount of keys in this map.\n get size() {\n return this.content.length >> 1\n }\n};\n\n// :: (?union) → OrderedMap\n// Return a map with the given content. If null, create an empty\n// map. If given an ordered map, return that map itself. If given an\n// object, create a map from the object's properties.\nOrderedMap.from = function(value) {\n if (value instanceof OrderedMap) return value\n var content = [];\n if (value) for (var prop in value) content.push(prop, value[prop]);\n return new OrderedMap(content)\n};\n\nexport default OrderedMap;\n","import OrderedMap from 'orderedmap';\n\nfunction findDiffStart(a, b, pos) {\n for (let i = 0;; i++) {\n if (i == a.childCount || i == b.childCount)\n return a.childCount == b.childCount ? null : pos;\n let childA = a.child(i), childB = b.child(i);\n if (childA == childB) {\n pos += childA.nodeSize;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return pos;\n if (childA.isText && childA.text != childB.text) {\n for (let j = 0; childA.text[j] == childB.text[j]; j++)\n pos++;\n return pos;\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffStart(childA.content, childB.content, pos + 1);\n if (inner != null)\n return inner;\n }\n pos += childA.nodeSize;\n }\n}\nfunction findDiffEnd(a, b, posA, posB) {\n for (let iA = a.childCount, iB = b.childCount;;) {\n if (iA == 0 || iB == 0)\n return iA == iB ? null : { a: posA, b: posB };\n let childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n if (childA == childB) {\n posA -= size;\n posB -= size;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return { a: posA, b: posB };\n if (childA.isText && childA.text != childB.text) {\n let same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++;\n posA--;\n posB--;\n }\n return { a: posA, b: posB };\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n if (inner)\n return inner;\n }\n posA -= size;\n posB -= size;\n }\n}\n\n/**\nA fragment represents a node's collection of child nodes.\n\nLike nodes, fragments are persistent data structures, and you\nshould not mutate them or their content. Rather, you create new\ninstances whenever needed. The API tries to make this easy.\n*/\nclass Fragment {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n content, size) {\n this.content = content;\n this.size = size || 0;\n if (size == null)\n for (let i = 0; i < content.length; i++)\n this.size += content[i].nodeSize;\n }\n /**\n Invoke a callback for all descendant nodes between the given two\n positions (relative to start of this fragment). Doesn't descend\n into a node when the callback returns `false`.\n */\n nodesBetween(from, to, f, nodeStart = 0, parent) {\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from && f(child, nodeStart + pos, parent || null, i) !== false && child.content.size) {\n let start = pos + 1;\n child.nodesBetween(Math.max(0, from - start), Math.min(child.content.size, to - start), f, nodeStart + start);\n }\n pos = end;\n }\n }\n /**\n Call the given callback for every descendant node. `pos` will be\n relative to the start of the fragment. The callback may return\n `false` to prevent traversal of a given node's children.\n */\n descendants(f) {\n this.nodesBetween(0, this.size, f);\n }\n /**\n Extract the text between `from` and `to`. See the same method on\n [`Node`](https://prosemirror.net/docs/ref/#model.Node.textBetween).\n */\n textBetween(from, to, blockSeparator, leafText) {\n let text = \"\", first = true;\n this.nodesBetween(from, to, (node, pos) => {\n let nodeText = node.isText ? node.text.slice(Math.max(from, pos) - pos, to - pos)\n : !node.isLeaf ? \"\"\n : leafText ? (typeof leafText === \"function\" ? leafText(node) : leafText)\n : node.type.spec.leafText ? node.type.spec.leafText(node)\n : \"\";\n if (node.isBlock && (node.isLeaf && nodeText || node.isTextblock) && blockSeparator) {\n if (first)\n first = false;\n else\n text += blockSeparator;\n }\n text += nodeText;\n }, 0);\n return text;\n }\n /**\n Create a new fragment containing the combined content of this\n fragment and the other.\n */\n append(other) {\n if (!other.size)\n return this;\n if (!this.size)\n return other;\n let last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text);\n i = 1;\n }\n for (; i < other.content.length; i++)\n content.push(other.content[i]);\n return new Fragment(content, this.size + other.size);\n }\n /**\n Cut out the sub-fragment between the two given positions.\n */\n cut(from, to = this.size) {\n if (from == 0 && to == this.size)\n return this;\n let result = [], size = 0;\n if (to > from)\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos));\n else\n child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1));\n }\n result.push(child);\n size += child.nodeSize;\n }\n pos = end;\n }\n return new Fragment(result, size);\n }\n /**\n @internal\n */\n cutByIndex(from, to) {\n if (from == to)\n return Fragment.empty;\n if (from == 0 && to == this.content.length)\n return this;\n return new Fragment(this.content.slice(from, to));\n }\n /**\n Create a new fragment in which the node at the given index is\n replaced by the given node.\n */\n replaceChild(index, node) {\n let current = this.content[index];\n if (current == node)\n return this;\n let copy = this.content.slice();\n let size = this.size + node.nodeSize - current.nodeSize;\n copy[index] = node;\n return new Fragment(copy, size);\n }\n /**\n Create a new fragment by prepending the given node to this\n fragment.\n */\n addToStart(node) {\n return new Fragment([node].concat(this.content), this.size + node.nodeSize);\n }\n /**\n Create a new fragment by appending the given node to this\n fragment.\n */\n addToEnd(node) {\n return new Fragment(this.content.concat(node), this.size + node.nodeSize);\n }\n /**\n Compare this fragment to another one.\n */\n eq(other) {\n if (this.content.length != other.content.length)\n return false;\n for (let i = 0; i < this.content.length; i++)\n if (!this.content[i].eq(other.content[i]))\n return false;\n return true;\n }\n /**\n The first child of the fragment, or `null` if it is empty.\n */\n get firstChild() { return this.content.length ? this.content[0] : null; }\n /**\n The last child of the fragment, or `null` if it is empty.\n */\n get lastChild() { return this.content.length ? this.content[this.content.length - 1] : null; }\n /**\n The number of child nodes in this fragment.\n */\n get childCount() { return this.content.length; }\n /**\n Get the child node at the given index. Raise an error when the\n index is out of range.\n */\n child(index) {\n let found = this.content[index];\n if (!found)\n throw new RangeError(\"Index \" + index + \" out of range for \" + this);\n return found;\n }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) {\n return this.content[index] || null;\n }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) {\n for (let i = 0, p = 0; i < this.content.length; i++) {\n let child = this.content[i];\n f(child, p, i);\n p += child.nodeSize;\n }\n }\n /**\n Find the first position at which this fragment and another\n fragment differ, or `null` if they are the same.\n */\n findDiffStart(other, pos = 0) {\n return findDiffStart(this, other, pos);\n }\n /**\n Find the first position, searching from the end, at which this\n fragment and the given fragment differ, or `null` if they are\n the same. Since this position will not be the same in both\n nodes, an object with two separate positions is returned.\n */\n findDiffEnd(other, pos = this.size, otherPos = other.size) {\n return findDiffEnd(this, other, pos, otherPos);\n }\n /**\n Find the index and inner offset corresponding to a given relative\n position in this fragment. The result object will be reused\n (overwritten) the next time the function is called. (Not public.)\n */\n findIndex(pos, round = -1) {\n if (pos == 0)\n return retIndex(0, pos);\n if (pos == this.size)\n return retIndex(this.content.length, pos);\n if (pos > this.size || pos < 0)\n throw new RangeError(`Position ${pos} outside of fragment (${this})`);\n for (let i = 0, curPos = 0;; i++) {\n let cur = this.child(i), end = curPos + cur.nodeSize;\n if (end >= pos) {\n if (end == pos || round > 0)\n return retIndex(i + 1, end);\n return retIndex(i, curPos);\n }\n curPos = end;\n }\n }\n /**\n Return a debugging string that describes this fragment.\n */\n toString() { return \"<\" + this.toStringInner() + \">\"; }\n /**\n @internal\n */\n toStringInner() { return this.content.join(\", \"); }\n /**\n Create a JSON-serializeable representation of this fragment.\n */\n toJSON() {\n return this.content.length ? this.content.map(n => n.toJSON()) : null;\n }\n /**\n Deserialize a fragment from its JSON representation.\n */\n static fromJSON(schema, value) {\n if (!value)\n return Fragment.empty;\n if (!Array.isArray(value))\n throw new RangeError(\"Invalid input for Fragment.fromJSON\");\n return new Fragment(value.map(schema.nodeFromJSON));\n }\n /**\n Build a fragment from an array of nodes. Ensures that adjacent\n text nodes with the same marks are joined together.\n */\n static fromArray(array) {\n if (!array.length)\n return Fragment.empty;\n let joined, size = 0;\n for (let i = 0; i < array.length; i++) {\n let node = array[i];\n size += node.nodeSize;\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined)\n joined = array.slice(0, i);\n joined[joined.length - 1] = node\n .withText(joined[joined.length - 1].text + node.text);\n }\n else if (joined) {\n joined.push(node);\n }\n }\n return new Fragment(joined || array, size);\n }\n /**\n Create a fragment from something that can be interpreted as a\n set of nodes. For `null`, it returns the empty fragment. For a\n fragment, the fragment itself. For a node or array of nodes, a\n fragment containing those nodes.\n */\n static from(nodes) {\n if (!nodes)\n return Fragment.empty;\n if (nodes instanceof Fragment)\n return nodes;\n if (Array.isArray(nodes))\n return this.fromArray(nodes);\n if (nodes.attrs)\n return new Fragment([nodes], nodes.nodeSize);\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"));\n }\n}\n/**\nAn empty fragment. Intended to be reused whenever a node doesn't\ncontain anything (rather than allocating a new empty fragment for\neach leaf node).\n*/\nFragment.empty = new Fragment([], 0);\nconst found = { index: 0, offset: 0 };\nfunction retIndex(index, offset) {\n found.index = index;\n found.offset = offset;\n return found;\n}\n\nfunction compareDeep(a, b) {\n if (a === b)\n return true;\n if (!(a && typeof a == \"object\") ||\n !(b && typeof b == \"object\"))\n return false;\n let array = Array.isArray(a);\n if (Array.isArray(b) != array)\n return false;\n if (array) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compareDeep(a[i], b[i]))\n return false;\n }\n else {\n for (let p in a)\n if (!(p in b) || !compareDeep(a[p], b[p]))\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n }\n return true;\n}\n\n/**\nA mark is a piece of information that can be attached to a node,\nsuch as it being emphasized, in code font, or a link. It has a\ntype and optionally a set of attributes that provide further\ninformation (such as the target of the link). Marks are created\nthrough a `Schema`, which controls which types exist and which\nattributes they have.\n*/\nclass Mark {\n /**\n @internal\n */\n constructor(\n /**\n The type of this mark.\n */\n type, \n /**\n The attributes associated with this mark.\n */\n attrs) {\n this.type = type;\n this.attrs = attrs;\n }\n /**\n Given a set of marks, create a new set which contains this one as\n well, in the right position. If this mark is already in the set,\n the set itself is returned. If any marks that are set to be\n [exclusive](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) with this mark are present,\n those are replaced by this one.\n */\n addToSet(set) {\n let copy, placed = false;\n for (let i = 0; i < set.length; i++) {\n let other = set[i];\n if (this.eq(other))\n return set;\n if (this.type.excludes(other.type)) {\n if (!copy)\n copy = set.slice(0, i);\n }\n else if (other.type.excludes(this.type)) {\n return set;\n }\n else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy)\n copy = set.slice(0, i);\n copy.push(this);\n placed = true;\n }\n if (copy)\n copy.push(other);\n }\n }\n if (!copy)\n copy = set.slice();\n if (!placed)\n copy.push(this);\n return copy;\n }\n /**\n Remove this mark from the given set, returning a new set. If this\n mark is not in the set, the set itself is returned.\n */\n removeFromSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return set.slice(0, i).concat(set.slice(i + 1));\n return set;\n }\n /**\n Test whether this mark is in the given set of marks.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return true;\n return false;\n }\n /**\n Test whether this mark has the same type and attributes as\n another mark.\n */\n eq(other) {\n return this == other ||\n (this.type == other.type && compareDeep(this.attrs, other.attrs));\n }\n /**\n Convert this mark to a JSON-serializeable representation.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n return obj;\n }\n /**\n Deserialize a mark from JSON.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Mark.fromJSON\");\n let type = schema.marks[json.type];\n if (!type)\n throw new RangeError(`There is no mark type ${json.type} in this schema`);\n return type.create(json.attrs);\n }\n /**\n Test whether two sets of marks are identical.\n */\n static sameSet(a, b) {\n if (a == b)\n return true;\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].eq(b[i]))\n return false;\n return true;\n }\n /**\n Create a properly sorted mark set from null, a single mark, or an\n unsorted array of marks.\n */\n static setFrom(marks) {\n if (!marks || Array.isArray(marks) && marks.length == 0)\n return Mark.none;\n if (marks instanceof Mark)\n return [marks];\n let copy = marks.slice();\n copy.sort((a, b) => a.type.rank - b.type.rank);\n return copy;\n }\n}\n/**\nThe empty set of marks.\n*/\nMark.none = [];\n\n/**\nError type raised by [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) when\ngiven an invalid replacement.\n*/\nclass ReplaceError extends Error {\n}\n/*\nReplaceError = function(this: any, message: string) {\n let err = Error.call(this, message)\n ;(err as any).__proto__ = ReplaceError.prototype\n return err\n} as any\n\nReplaceError.prototype = Object.create(Error.prototype)\nReplaceError.prototype.constructor = ReplaceError\nReplaceError.prototype.name = \"ReplaceError\"\n*/\n/**\nA slice represents a piece cut out of a larger document. It\nstores not only a fragment, but also the depth up to which nodes on\nboth side are ‘open’ (cut through).\n*/\nclass Slice {\n /**\n Create a slice. When specifying a non-zero open depth, you must\n make sure that there are nodes of at least that depth at the\n appropriate side of the fragment—i.e. if the fragment is an\n empty paragraph node, `openStart` and `openEnd` can't be greater\n than 1.\n \n It is not necessary for the content of open nodes to conform to\n the schema's content constraints, though it should be a valid\n start/end/middle for such a node, depending on which sides are\n open.\n */\n constructor(\n /**\n The slice's content.\n */\n content, \n /**\n The open depth at the start of the fragment.\n */\n openStart, \n /**\n The open depth at the end.\n */\n openEnd) {\n this.content = content;\n this.openStart = openStart;\n this.openEnd = openEnd;\n }\n /**\n The size this slice would add when inserted into a document.\n */\n get size() {\n return this.content.size - this.openStart - this.openEnd;\n }\n /**\n @internal\n */\n insertAt(pos, fragment) {\n let content = insertInto(this.content, pos + this.openStart, fragment);\n return content && new Slice(content, this.openStart, this.openEnd);\n }\n /**\n @internal\n */\n removeBetween(from, to) {\n return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd);\n }\n /**\n Tests whether this slice is equal to another slice.\n */\n eq(other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd;\n }\n /**\n @internal\n */\n toString() {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\";\n }\n /**\n Convert a slice to a JSON-serializable representation.\n */\n toJSON() {\n if (!this.content.size)\n return null;\n let json = { content: this.content.toJSON() };\n if (this.openStart > 0)\n json.openStart = this.openStart;\n if (this.openEnd > 0)\n json.openEnd = this.openEnd;\n return json;\n }\n /**\n Deserialize a slice from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n return Slice.empty;\n let openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n throw new RangeError(\"Invalid input for Slice.fromJSON\");\n return new Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd);\n }\n /**\n Create a slice from a fragment by taking the maximum possible\n open value on both side of the fragment.\n */\n static maxOpen(fragment, openIsolating = true) {\n let openStart = 0, openEnd = 0;\n for (let n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild)\n openStart++;\n for (let n = fragment.lastChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.lastChild)\n openEnd++;\n return new Slice(fragment, openStart, openEnd);\n }\n}\n/**\nThe empty slice.\n*/\nSlice.empty = new Slice(Fragment.empty, 0, 0);\nfunction removeRange(content, from, to) {\n let { index, offset } = content.findIndex(from), child = content.maybeChild(index);\n let { index: indexTo, offset: offsetTo } = content.findIndex(to);\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText)\n throw new RangeError(\"Removing non-flat range\");\n return content.cut(0, from).append(content.cut(to));\n }\n if (index != indexTo)\n throw new RangeError(\"Removing non-flat range\");\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)));\n}\nfunction insertInto(content, dist, insert, parent) {\n let { index, offset } = content.findIndex(dist), child = content.maybeChild(index);\n if (offset == dist || child.isText) {\n if (parent && !parent.canReplace(index, index, insert))\n return null;\n return content.cut(0, dist).append(insert).append(content.cut(dist));\n }\n let inner = insertInto(child.content, dist - offset - 1, insert);\n return inner && content.replaceChild(index, child.copy(inner));\n}\nfunction replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n throw new ReplaceError(\"Inserted content deeper than insertion position\");\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n throw new ReplaceError(\"Inconsistent open depths\");\n return replaceOuter($from, $to, slice, 0);\n}\nfunction replaceOuter($from, $to, slice, depth) {\n let index = $from.index(depth), node = $from.node(depth);\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n let inner = replaceOuter($from, $to, slice, depth + 1);\n return node.copy(node.content.replaceChild(index, inner));\n }\n else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth));\n }\n else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n let parent = $from.parent, content = parent.content;\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)));\n }\n else {\n let { start, end } = prepareSliceForReplace(slice, $from);\n return close(node, replaceThreeWay($from, start, end, $to, depth));\n }\n}\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name);\n}\nfunction joinable($before, $after, depth) {\n let node = $before.node(depth);\n checkJoin(node, $after.node(depth));\n return node;\n}\nfunction addNode(child, target) {\n let last = target.length - 1;\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n target[last] = child.withText(target[last].text + child.text);\n else\n target.push(child);\n}\nfunction addRange($start, $end, depth, target) {\n let node = ($end || $start).node(depth);\n let startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n if ($start) {\n startIndex = $start.index(depth);\n if ($start.depth > depth) {\n startIndex++;\n }\n else if ($start.textOffset) {\n addNode($start.nodeAfter, target);\n startIndex++;\n }\n }\n for (let i = startIndex; i < endIndex; i++)\n addNode(node.child(i), target);\n if ($end && $end.depth == depth && $end.textOffset)\n addNode($end.nodeBefore, target);\n}\nfunction close(node, content) {\n node.type.checkContent(content);\n return node.copy(content);\n}\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n let openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n let openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n let content = [];\n addRange(null, $from, depth, content);\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd);\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n }\n else {\n if (openStart)\n addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content);\n addRange($start, $end, depth, content);\n if (openEnd)\n addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction replaceTwoWay($from, $to, depth) {\n let content = [];\n addRange(null, $from, depth, content);\n if ($from.depth > depth) {\n let type = joinable($from, $to, depth + 1);\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction prepareSliceForReplace(slice, $along) {\n let extra = $along.depth - slice.openStart, parent = $along.node(extra);\n let node = parent.copy(slice.content);\n for (let i = extra - 1; i >= 0; i--)\n node = $along.node(i).copy(Fragment.from(node));\n return { start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra) };\n}\n\n/**\nYou can [_resolve_](https://prosemirror.net/docs/ref/#model.Node.resolve) a position to get more\ninformation about it. Objects of this class represent such a\nresolved position, providing various pieces of context\ninformation, and some helper methods.\n\nThroughout this interface, methods that take an optional `depth`\nparameter will interpret undefined as `this.depth` and negative\nnumbers as `this.depth + value`.\n*/\nclass ResolvedPos {\n /**\n @internal\n */\n constructor(\n /**\n The position that was resolved.\n */\n pos, \n /**\n @internal\n */\n path, \n /**\n The offset this position has into its parent node.\n */\n parentOffset) {\n this.pos = pos;\n this.path = path;\n this.parentOffset = parentOffset;\n this.depth = path.length / 3 - 1;\n }\n /**\n @internal\n */\n resolveDepth(val) {\n if (val == null)\n return this.depth;\n if (val < 0)\n return this.depth + val;\n return val;\n }\n /**\n The parent node that the position points into. Note that even if\n a position points into a text node, that node is not considered\n the parent—text nodes are ‘flat’ in this model, and have no content.\n */\n get parent() { return this.node(this.depth); }\n /**\n The root node in which the position was resolved.\n */\n get doc() { return this.node(0); }\n /**\n The ancestor node at the given level. `p.node(p.depth)` is the\n same as `p.parent`.\n */\n node(depth) { return this.path[this.resolveDepth(depth) * 3]; }\n /**\n The index into the ancestor at the given level. If this points\n at the 3rd node in the 2nd paragraph on the top level, for\n example, `p.index(0)` is 1 and `p.index(1)` is 2.\n */\n index(depth) { return this.path[this.resolveDepth(depth) * 3 + 1]; }\n /**\n The index pointing after this position into the ancestor at the\n given level.\n */\n indexAfter(depth) {\n depth = this.resolveDepth(depth);\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1);\n }\n /**\n The (absolute) position at the start of the node at the given\n level.\n */\n start(depth) {\n depth = this.resolveDepth(depth);\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n }\n /**\n The (absolute) position at the end of the node at the given\n level.\n */\n end(depth) {\n depth = this.resolveDepth(depth);\n return this.start(depth) + this.node(depth).content.size;\n }\n /**\n The (absolute) position directly before the wrapping node at the\n given level, or, when `depth` is `this.depth + 1`, the original\n position.\n */\n before(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position before the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1];\n }\n /**\n The (absolute) position directly after the wrapping node at the\n given level, or the original position when `depth` is `this.depth + 1`.\n */\n after(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position after the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize;\n }\n /**\n When this position points into a text node, this returns the\n distance between the position and the start of the text node.\n Will be zero for positions that point between nodes.\n */\n get textOffset() { return this.pos - this.path[this.path.length - 1]; }\n /**\n Get the node directly after the position, if any. If the position\n points into a text node, only the part of that node after the\n position is returned.\n */\n get nodeAfter() {\n let parent = this.parent, index = this.index(this.depth);\n if (index == parent.childCount)\n return null;\n let dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n return dOff ? parent.child(index).cut(dOff) : child;\n }\n /**\n Get the node directly before the position, if any. If the\n position points into a text node, only the part of that node\n before the position is returned.\n */\n get nodeBefore() {\n let index = this.index(this.depth);\n let dOff = this.pos - this.path[this.path.length - 1];\n if (dOff)\n return this.parent.child(index).cut(0, dOff);\n return index == 0 ? null : this.parent.child(index - 1);\n }\n /**\n Get the position at the given index in the parent node at the\n given depth (which defaults to `this.depth`).\n */\n posAtIndex(index, depth) {\n depth = this.resolveDepth(depth);\n let node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n for (let i = 0; i < index; i++)\n pos += node.child(i).nodeSize;\n return pos;\n }\n /**\n Get the marks at this position, factoring in the surrounding\n marks' [`inclusive`](https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive) property. If the\n position is at the start of a non-empty node, the marks of the\n node after it (if any) are returned.\n */\n marks() {\n let parent = this.parent, index = this.index();\n // In an empty parent, return the empty array\n if (parent.content.size == 0)\n return Mark.none;\n // When inside a text node, just return the text node's marks\n if (this.textOffset)\n return parent.child(index).marks;\n let main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n // If the `after` flag is true of there is no node before, make\n // the node after this position the main reference.\n if (!main) {\n let tmp = main;\n main = other;\n other = tmp;\n }\n // Use all marks in the main node, except those that have\n // `inclusive` set to false and are not present in the other node.\n let marks = main.marks;\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n Get the marks after the current position, if any, except those\n that are non-inclusive and not present at position `$end`. This\n is mostly useful for getting the set of marks to preserve after a\n deletion. Will return `null` if this position is at the end of\n its parent node or its parent node isn't a textblock (in which\n case no marks should be preserved).\n */\n marksAcross($end) {\n let after = this.parent.maybeChild(this.index());\n if (!after || !after.isInline)\n return null;\n let marks = after.marks, next = $end.parent.maybeChild($end.index());\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n The depth up to which this position and the given (non-resolved)\n position share the same parent nodes.\n */\n sharedDepth(pos) {\n for (let depth = this.depth; depth > 0; depth--)\n if (this.start(depth) <= pos && this.end(depth) >= pos)\n return depth;\n return 0;\n }\n /**\n Returns a range based on the place where this position and the\n given position diverge around block content. If both point into\n the same textblock, for example, a range around that textblock\n will be returned. If they point into different blocks, the range\n around those blocks in their shared ancestor is returned. You can\n pass in an optional predicate that will be called with a parent\n node to see if a range into that parent is acceptable.\n */\n blockRange(other = this, pred) {\n if (other.pos < this.pos)\n return other.blockRange(this);\n for (let d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n return new NodeRange(this, other, d);\n return null;\n }\n /**\n Query whether the given position shares the same parent node.\n */\n sameParent(other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset;\n }\n /**\n Return the greater of this and the given position.\n */\n max(other) {\n return other.pos > this.pos ? other : this;\n }\n /**\n Return the smaller of this and the given position.\n */\n min(other) {\n return other.pos < this.pos ? other : this;\n }\n /**\n @internal\n */\n toString() {\n let str = \"\";\n for (let i = 1; i <= this.depth; i++)\n str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1);\n return str + \":\" + this.parentOffset;\n }\n /**\n @internal\n */\n static resolve(doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size))\n throw new RangeError(\"Position \" + pos + \" out of range\");\n let path = [];\n let start = 0, parentOffset = pos;\n for (let node = doc;;) {\n let { index, offset } = node.content.findIndex(parentOffset);\n let rem = parentOffset - offset;\n path.push(node, index, start + offset);\n if (!rem)\n break;\n node = node.child(index);\n if (node.isText)\n break;\n parentOffset = rem - 1;\n start += offset + 1;\n }\n return new ResolvedPos(pos, path, parentOffset);\n }\n /**\n @internal\n */\n static resolveCached(doc, pos) {\n for (let i = 0; i < resolveCache.length; i++) {\n let cached = resolveCache[i];\n if (cached.pos == pos && cached.doc == doc)\n return cached;\n }\n let result = resolveCache[resolveCachePos] = ResolvedPos.resolve(doc, pos);\n resolveCachePos = (resolveCachePos + 1) % resolveCacheSize;\n return result;\n }\n}\nlet resolveCache = [], resolveCachePos = 0, resolveCacheSize = 12;\n/**\nRepresents a flat range of content, i.e. one that starts and\nends in the same node.\n*/\nclass NodeRange {\n /**\n Construct a node range. `$from` and `$to` should point into the\n same node until at least the given `depth`, since a node range\n denotes an adjacent set of nodes in a single parent node.\n */\n constructor(\n /**\n A resolved position along the start of the content. May have a\n `depth` greater than this object's `depth` property, since\n these are the positions that were used to compute the range,\n not re-resolved positions directly at its boundaries.\n */\n $from, \n /**\n A position along the end of the content. See\n caveat for [`$from`](https://prosemirror.net/docs/ref/#model.NodeRange.$from).\n */\n $to, \n /**\n The depth of the node that this range points into.\n */\n depth) {\n this.$from = $from;\n this.$to = $to;\n this.depth = depth;\n }\n /**\n The position at the start of the range.\n */\n get start() { return this.$from.before(this.depth + 1); }\n /**\n The position at the end of the range.\n */\n get end() { return this.$to.after(this.depth + 1); }\n /**\n The parent node that the range points into.\n */\n get parent() { return this.$from.node(this.depth); }\n /**\n The start index of the range in the parent node.\n */\n get startIndex() { return this.$from.index(this.depth); }\n /**\n The end index of the range in the parent node.\n */\n get endIndex() { return this.$to.indexAfter(this.depth); }\n}\n\nconst emptyAttrs = Object.create(null);\n/**\nThis class represents a node in the tree that makes up a\nProseMirror document. So a document is an instance of `Node`, with\nchildren that are also instances of `Node`.\n\nNodes are persistent data structures. Instead of changing them, you\ncreate new ones with the content you want. Old ones keep pointing\nat the old document shape. This is made cheaper by sharing\nstructure between the old and new data as much as possible, which a\ntree shape like this (without back pointers) makes easy.\n\n**Do not** directly mutate the properties of a `Node` object. See\n[the guide](/docs/guide/#doc) for more information.\n*/\nclass Node {\n /**\n @internal\n */\n constructor(\n /**\n The type of node that this is.\n */\n type, \n /**\n An object mapping attribute names to values. The kind of\n attributes allowed and required are\n [determined](https://prosemirror.net/docs/ref/#model.NodeSpec.attrs) by the node type.\n */\n attrs, \n // A fragment holding the node's children.\n content, \n /**\n The marks (things like whether it is emphasized or part of a\n link) applied to this node.\n */\n marks = Mark.none) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.content = content || Fragment.empty;\n }\n /**\n The size of this node, as defined by the integer-based [indexing\n scheme](/docs/guide/#doc.indexing). For text nodes, this is the\n amount of characters. For other leaf nodes, it is one. For\n non-leaf nodes, it is the size of the content plus two (the\n start and end token).\n */\n get nodeSize() { return this.isLeaf ? 1 : 2 + this.content.size; }\n /**\n The number of children that the node has.\n */\n get childCount() { return this.content.childCount; }\n /**\n Get the child node at the given index. Raises an error when the\n index is out of range.\n */\n child(index) { return this.content.child(index); }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) { return this.content.maybeChild(index); }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) { this.content.forEach(f); }\n /**\n Invoke a callback for all descendant nodes recursively between\n the given two positions that are relative to start of this\n node's content. The callback is invoked with the node, its\n position relative to the original node (method receiver),\n its parent node, and its child index. When the callback returns\n false for a given node, that node's children will not be\n recursed over. The last parameter can be used to specify a\n starting position to count from.\n */\n nodesBetween(from, to, f, startPos = 0) {\n this.content.nodesBetween(from, to, f, startPos, this);\n }\n /**\n Call the given callback for every descendant node. Doesn't\n descend into a node when the callback returns `false`.\n */\n descendants(f) {\n this.nodesBetween(0, this.content.size, f);\n }\n /**\n Concatenates all the text nodes found in this fragment and its\n children.\n */\n get textContent() {\n return (this.isLeaf && this.type.spec.leafText)\n ? this.type.spec.leafText(this)\n : this.textBetween(0, this.content.size, \"\");\n }\n /**\n Get all text between positions `from` and `to`. When\n `blockSeparator` is given, it will be inserted to separate text\n from different block nodes. If `leafText` is given, it'll be\n inserted for every non-text leaf node encountered, otherwise\n [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec^leafText) will be used.\n */\n textBetween(from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText);\n }\n /**\n Returns this node's first child, or `null` if there are no\n children.\n */\n get firstChild() { return this.content.firstChild; }\n /**\n Returns this node's last child, or `null` if there are no\n children.\n */\n get lastChild() { return this.content.lastChild; }\n /**\n Test whether two nodes represent the same piece of document.\n */\n eq(other) {\n return this == other || (this.sameMarkup(other) && this.content.eq(other.content));\n }\n /**\n Compare the markup (type, attributes, and marks) of this node to\n those of another. Returns `true` if both have the same markup.\n */\n sameMarkup(other) {\n return this.hasMarkup(other.type, other.attrs, other.marks);\n }\n /**\n Check whether this node's markup correspond to the given type,\n attributes, and marks.\n */\n hasMarkup(type, attrs, marks) {\n return this.type == type &&\n compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n Mark.sameSet(this.marks, marks || Mark.none);\n }\n /**\n Create a new node with the same markup as this node, containing\n the given content (or empty, if no content is given).\n */\n copy(content = null) {\n if (content == this.content)\n return this;\n return new Node(this.type, this.attrs, content, this.marks);\n }\n /**\n Create a copy of this node, with the given set of marks instead\n of the node's own marks.\n */\n mark(marks) {\n return marks == this.marks ? this : new Node(this.type, this.attrs, this.content, marks);\n }\n /**\n Create a copy of this node with only the content between the\n given positions. If `to` is not given, it defaults to the end of\n the node.\n */\n cut(from, to = this.content.size) {\n if (from == 0 && to == this.content.size)\n return this;\n return this.copy(this.content.cut(from, to));\n }\n /**\n Cut out the part of the document between the given positions, and\n return it as a `Slice` object.\n */\n slice(from, to = this.content.size, includeParents = false) {\n if (from == to)\n return Slice.empty;\n let $from = this.resolve(from), $to = this.resolve(to);\n let depth = includeParents ? 0 : $from.sharedDepth(to);\n let start = $from.start(depth), node = $from.node(depth);\n let content = node.content.cut($from.pos - start, $to.pos - start);\n return new Slice(content, $from.depth - depth, $to.depth - depth);\n }\n /**\n Replace the part of the document between the given positions with\n the given slice. The slice must 'fit', meaning its open sides\n must be able to connect to the surrounding content, and its\n content nodes must be valid children for the node they are placed\n into. If any of this is violated, an error of type\n [`ReplaceError`](https://prosemirror.net/docs/ref/#model.ReplaceError) is thrown.\n */\n replace(from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice);\n }\n /**\n Find the node directly after the given position.\n */\n nodeAt(pos) {\n for (let node = this;;) {\n let { index, offset } = node.content.findIndex(pos);\n node = node.maybeChild(index);\n if (!node)\n return null;\n if (offset == pos || node.isText)\n return node;\n pos -= offset + 1;\n }\n }\n /**\n Find the (direct) child node after the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childAfter(pos) {\n let { index, offset } = this.content.findIndex(pos);\n return { node: this.content.maybeChild(index), index, offset };\n }\n /**\n Find the (direct) child node before the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childBefore(pos) {\n if (pos == 0)\n return { node: null, index: 0, offset: 0 };\n let { index, offset } = this.content.findIndex(pos);\n if (offset < pos)\n return { node: this.content.child(index), index, offset };\n let node = this.content.child(index - 1);\n return { node, index: index - 1, offset: offset - node.nodeSize };\n }\n /**\n Resolve the given position in the document, returning an\n [object](https://prosemirror.net/docs/ref/#model.ResolvedPos) with information about its context.\n */\n resolve(pos) { return ResolvedPos.resolveCached(this, pos); }\n /**\n @internal\n */\n resolveNoCache(pos) { return ResolvedPos.resolve(this, pos); }\n /**\n Test whether a given mark or mark type occurs in this document\n between the two given positions.\n */\n rangeHasMark(from, to, type) {\n let found = false;\n if (to > from)\n this.nodesBetween(from, to, node => {\n if (type.isInSet(node.marks))\n found = true;\n return !found;\n });\n return found;\n }\n /**\n True when this is a block (non-inline node)\n */\n get isBlock() { return this.type.isBlock; }\n /**\n True when this is a textblock node, a block node with inline\n content.\n */\n get isTextblock() { return this.type.isTextblock; }\n /**\n True when this node allows inline content.\n */\n get inlineContent() { return this.type.inlineContent; }\n /**\n True when this is an inline node (a text node or a node that can\n appear among text).\n */\n get isInline() { return this.type.isInline; }\n /**\n True when this is a text node.\n */\n get isText() { return this.type.isText; }\n /**\n True when this is a leaf node.\n */\n get isLeaf() { return this.type.isLeaf; }\n /**\n True when this is an atom, i.e. when it does not have directly\n editable content. This is usually the same as `isLeaf`, but can\n be configured with the [`atom` property](https://prosemirror.net/docs/ref/#model.NodeSpec.atom)\n on a node's spec (typically used when the node is displayed as\n an uneditable [node view](https://prosemirror.net/docs/ref/#view.NodeView)).\n */\n get isAtom() { return this.type.isAtom; }\n /**\n Return a string representation of this node for debugging\n purposes.\n */\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n let name = this.type.name;\n if (this.content.size)\n name += \"(\" + this.content.toStringInner() + \")\";\n return wrapMarks(this.marks, name);\n }\n /**\n Get the content match in this node at the given index.\n */\n contentMatchAt(index) {\n let match = this.type.contentMatch.matchFragment(this.content, 0, index);\n if (!match)\n throw new Error(\"Called contentMatchAt on a node with invalid content\");\n return match;\n }\n /**\n Test whether replacing the range between `from` and `to` (by\n child index) with the given replacement fragment (which defaults\n to the empty fragment) would leave the node's content valid. You\n can optionally pass `start` and `end` indices into the\n replacement fragment.\n */\n canReplace(from, to, replacement = Fragment.empty, start = 0, end = replacement.childCount) {\n let one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n let two = one && one.matchFragment(this.content, to);\n if (!two || !two.validEnd)\n return false;\n for (let i = start; i < end; i++)\n if (!this.type.allowsMarks(replacement.child(i).marks))\n return false;\n return true;\n }\n /**\n Test whether replacing the range `from` to `to` (by index) with\n a node of the given type would leave the node's content valid.\n */\n canReplaceWith(from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks))\n return false;\n let start = this.contentMatchAt(from).matchType(type);\n let end = start && start.matchFragment(this.content, to);\n return end ? end.validEnd : false;\n }\n /**\n Test whether the given node's content could be appended to this\n node. If that node is empty, this will only return true if there\n is at least one node type that can appear in both nodes (to avoid\n merging completely incompatible nodes).\n */\n canAppend(other) {\n if (other.content.size)\n return this.canReplace(this.childCount, this.childCount, other.content);\n else\n return this.type.compatibleContent(other.type);\n }\n /**\n Check whether this node and its descendants conform to the\n schema, and raise error when they do not.\n */\n check() {\n this.type.checkContent(this.content);\n let copy = Mark.none;\n for (let i = 0; i < this.marks.length; i++)\n copy = this.marks[i].addToSet(copy);\n if (!Mark.sameSet(copy, this.marks))\n throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(m => m.type.name)}`);\n this.content.forEach(node => node.check());\n }\n /**\n Return a JSON-serializeable representation of this node.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n if (this.content.size)\n obj.content = this.content.toJSON();\n if (this.marks.length)\n obj.marks = this.marks.map(n => n.toJSON());\n return obj;\n }\n /**\n Deserialize a node from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Node.fromJSON\");\n let marks = null;\n if (json.marks) {\n if (!Array.isArray(json.marks))\n throw new RangeError(\"Invalid mark data for Node.fromJSON\");\n marks = json.marks.map(schema.markFromJSON);\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\")\n throw new RangeError(\"Invalid text node in JSON\");\n return schema.text(json.text, marks);\n }\n let content = Fragment.fromJSON(schema, json.content);\n return schema.nodeType(json.type).create(json.attrs, content, marks);\n }\n}\nNode.prototype.text = undefined;\nclass TextNode extends Node {\n /**\n @internal\n */\n constructor(type, attrs, content, marks) {\n super(type, attrs, null, marks);\n if (!content)\n throw new RangeError(\"Empty text nodes are not allowed\");\n this.text = content;\n }\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n return wrapMarks(this.marks, JSON.stringify(this.text));\n }\n get textContent() { return this.text; }\n textBetween(from, to) { return this.text.slice(from, to); }\n get nodeSize() { return this.text.length; }\n mark(marks) {\n return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks);\n }\n withText(text) {\n if (text == this.text)\n return this;\n return new TextNode(this.type, this.attrs, text, this.marks);\n }\n cut(from = 0, to = this.text.length) {\n if (from == 0 && to == this.text.length)\n return this;\n return this.withText(this.text.slice(from, to));\n }\n eq(other) {\n return this.sameMarkup(other) && this.text == other.text;\n }\n toJSON() {\n let base = super.toJSON();\n base.text = this.text;\n return base;\n }\n}\nfunction wrapMarks(marks, str) {\n for (let i = marks.length - 1; i >= 0; i--)\n str = marks[i].type.name + \"(\" + str + \")\";\n return str;\n}\n\n/**\nInstances of this class represent a match state of a node type's\n[content expression](https://prosemirror.net/docs/ref/#model.NodeSpec.content), and can be used to\nfind out whether further content matches here, and whether a given\nposition is a valid end of the node.\n*/\nclass ContentMatch {\n /**\n @internal\n */\n constructor(\n /**\n True when this match state represents a valid end of the node.\n */\n validEnd) {\n this.validEnd = validEnd;\n /**\n @internal\n */\n this.next = [];\n /**\n @internal\n */\n this.wrapCache = [];\n }\n /**\n @internal\n */\n static parse(string, nodeTypes) {\n let stream = new TokenStream(string, nodeTypes);\n if (stream.next == null)\n return ContentMatch.empty;\n let expr = parseExpr(stream);\n if (stream.next)\n stream.err(\"Unexpected trailing text\");\n let match = dfa(nfa(expr));\n checkForDeadEnds(match, stream);\n return match;\n }\n /**\n Match a node type, returning a match after that node if\n successful.\n */\n matchType(type) {\n for (let i = 0; i < this.next.length; i++)\n if (this.next[i].type == type)\n return this.next[i].next;\n return null;\n }\n /**\n Try to match a fragment. Returns the resulting match when\n successful.\n */\n matchFragment(frag, start = 0, end = frag.childCount) {\n let cur = this;\n for (let i = start; cur && i < end; i++)\n cur = cur.matchType(frag.child(i).type);\n return cur;\n }\n /**\n @internal\n */\n get inlineContent() {\n return this.next.length != 0 && this.next[0].type.isInline;\n }\n /**\n Get the first matching node type at this match position that can\n be generated.\n */\n get defaultType() {\n for (let i = 0; i < this.next.length; i++) {\n let { type } = this.next[i];\n if (!(type.isText || type.hasRequiredAttrs()))\n return type;\n }\n return null;\n }\n /**\n @internal\n */\n compatible(other) {\n for (let i = 0; i < this.next.length; i++)\n for (let j = 0; j < other.next.length; j++)\n if (this.next[i].type == other.next[j].type)\n return true;\n return false;\n }\n /**\n Try to match the given fragment, and if that fails, see if it can\n be made to match by inserting nodes in front of it. When\n successful, return a fragment of inserted nodes (which may be\n empty if nothing had to be inserted). When `toEnd` is true, only\n return a fragment if the resulting match goes to the end of the\n content expression.\n */\n fillBefore(after, toEnd = false, startIndex = 0) {\n let seen = [this];\n function search(match, types) {\n let finished = match.matchFragment(after, startIndex);\n if (finished && (!toEnd || finished.validEnd))\n return Fragment.from(types.map(tp => tp.createAndFill()));\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next);\n let found = search(next, types.concat(type));\n if (found)\n return found;\n }\n }\n return null;\n }\n return search(this, []);\n }\n /**\n Find a set of wrapping node types that would allow a node of the\n given type to appear at this position. The result may be empty\n (when it fits directly) and will be null when no such wrapping\n exists.\n */\n findWrapping(target) {\n for (let i = 0; i < this.wrapCache.length; i += 2)\n if (this.wrapCache[i] == target)\n return this.wrapCache[i + 1];\n let computed = this.computeWrapping(target);\n this.wrapCache.push(target, computed);\n return computed;\n }\n /**\n @internal\n */\n computeWrapping(target) {\n let seen = Object.create(null), active = [{ match: this, type: null, via: null }];\n while (active.length) {\n let current = active.shift(), match = current.match;\n if (match.matchType(target)) {\n let result = [];\n for (let obj = current; obj.type; obj = obj.via)\n result.push(obj.type);\n return result.reverse();\n }\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || next.validEnd)) {\n active.push({ match: type.contentMatch, type, via: current });\n seen[type.name] = true;\n }\n }\n }\n return null;\n }\n /**\n The number of outgoing edges this node has in the finite\n automaton that describes the content expression.\n */\n get edgeCount() {\n return this.next.length;\n }\n /**\n Get the _n_​th outgoing edge from this node in the finite\n automaton that describes the content expression.\n */\n edge(n) {\n if (n >= this.next.length)\n throw new RangeError(`There's no ${n}th edge in this content match`);\n return this.next[n];\n }\n /**\n @internal\n */\n toString() {\n let seen = [];\n function scan(m) {\n seen.push(m);\n for (let i = 0; i < m.next.length; i++)\n if (seen.indexOf(m.next[i].next) == -1)\n scan(m.next[i].next);\n }\n scan(this);\n return seen.map((m, i) => {\n let out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n for (let i = 0; i < m.next.length; i++)\n out += (i ? \", \" : \"\") + m.next[i].type.name + \"->\" + seen.indexOf(m.next[i].next);\n return out;\n }).join(\"\\n\");\n }\n}\n/**\n@internal\n*/\nContentMatch.empty = new ContentMatch(true);\nclass TokenStream {\n constructor(string, nodeTypes) {\n this.string = string;\n this.nodeTypes = nodeTypes;\n this.inline = null;\n this.pos = 0;\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n if (this.tokens[this.tokens.length - 1] == \"\")\n this.tokens.pop();\n if (this.tokens[0] == \"\")\n this.tokens.shift();\n }\n get next() { return this.tokens[this.pos]; }\n eat(tok) { return this.next == tok && (this.pos++ || true); }\n err(str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\"); }\n}\nfunction parseExpr(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSeq(stream));\n } while (stream.eat(\"|\"));\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n}\nfunction parseExprSeq(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSubscript(stream));\n } while (stream.next && stream.next != \")\" && stream.next != \"|\");\n return exprs.length == 1 ? exprs[0] : { type: \"seq\", exprs };\n}\nfunction parseExprSubscript(stream) {\n let expr = parseExprAtom(stream);\n for (;;) {\n if (stream.eat(\"+\"))\n expr = { type: \"plus\", expr };\n else if (stream.eat(\"*\"))\n expr = { type: \"star\", expr };\n else if (stream.eat(\"?\"))\n expr = { type: \"opt\", expr };\n else if (stream.eat(\"{\"))\n expr = parseExprRange(stream, expr);\n else\n break;\n }\n return expr;\n}\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next))\n stream.err(\"Expected number, got '\" + stream.next + \"'\");\n let result = Number(stream.next);\n stream.pos++;\n return result;\n}\nfunction parseExprRange(stream, expr) {\n let min = parseNum(stream), max = min;\n if (stream.eat(\",\")) {\n if (stream.next != \"}\")\n max = parseNum(stream);\n else\n max = -1;\n }\n if (!stream.eat(\"}\"))\n stream.err(\"Unclosed braced range\");\n return { type: \"range\", min, max, expr };\n}\nfunction resolveName(stream, name) {\n let types = stream.nodeTypes, type = types[name];\n if (type)\n return [type];\n let result = [];\n for (let typeName in types) {\n let type = types[typeName];\n if (type.groups.indexOf(name) > -1)\n result.push(type);\n }\n if (result.length == 0)\n stream.err(\"No node type or group '\" + name + \"' found\");\n return result;\n}\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n let expr = parseExpr(stream);\n if (!stream.eat(\")\"))\n stream.err(\"Missing closing paren\");\n return expr;\n }\n else if (!/\\W/.test(stream.next)) {\n let exprs = resolveName(stream, stream.next).map(type => {\n if (stream.inline == null)\n stream.inline = type.isInline;\n else if (stream.inline != type.isInline)\n stream.err(\"Mixing inline and block content\");\n return { type: \"name\", value: type };\n });\n stream.pos++;\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n }\n else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\");\n }\n}\n/**\nConstruct an NFA from an expression as returned by the parser. The\nNFA is represented as an array of states, which are themselves\narrays of edges, which are `{term, to}` objects. The first state is\nthe entry state and the last node is the success state.\n\nNote that unlike typical NFAs, the edge ordering in this one is\nsignificant, in that it is used to contruct filler content when\nnecessary.\n*/\nfunction nfa(expr) {\n let nfa = [[]];\n connect(compile(expr, 0), node());\n return nfa;\n function node() { return nfa.push([]) - 1; }\n function edge(from, to, term) {\n let edge = { term, to };\n nfa[from].push(edge);\n return edge;\n }\n function connect(edges, to) {\n edges.forEach(edge => edge.to = to);\n }\n function compile(expr, from) {\n if (expr.type == \"choice\") {\n return expr.exprs.reduce((out, expr) => out.concat(compile(expr, from)), []);\n }\n else if (expr.type == \"seq\") {\n for (let i = 0;; i++) {\n let next = compile(expr.exprs[i], from);\n if (i == expr.exprs.length - 1)\n return next;\n connect(next, from = node());\n }\n }\n else if (expr.type == \"star\") {\n let loop = node();\n edge(from, loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"plus\") {\n let loop = node();\n connect(compile(expr.expr, from), loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"opt\") {\n return [edge(from)].concat(compile(expr.expr, from));\n }\n else if (expr.type == \"range\") {\n let cur = from;\n for (let i = 0; i < expr.min; i++) {\n let next = node();\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n if (expr.max == -1) {\n connect(compile(expr.expr, cur), cur);\n }\n else {\n for (let i = expr.min; i < expr.max; i++) {\n let next = node();\n edge(cur, next);\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n }\n return [edge(cur)];\n }\n else if (expr.type == \"name\") {\n return [edge(from, undefined, expr.value)];\n }\n else {\n throw new Error(\"Unknown expr type\");\n }\n }\n}\nfunction cmp(a, b) { return b - a; }\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n let result = [];\n scan(node);\n return result.sort(cmp);\n function scan(node) {\n let edges = nfa[node];\n if (edges.length == 1 && !edges[0].term)\n return scan(edges[0].to);\n result.push(node);\n for (let i = 0; i < edges.length; i++) {\n let { term, to } = edges[i];\n if (!term && result.indexOf(to) == -1)\n scan(to);\n }\n }\n}\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n let labeled = Object.create(null);\n return explore(nullFrom(nfa, 0));\n function explore(states) {\n let out = [];\n states.forEach(node => {\n nfa[node].forEach(({ term, to }) => {\n if (!term)\n return;\n let set;\n for (let i = 0; i < out.length; i++)\n if (out[i][0] == term)\n set = out[i][1];\n nullFrom(nfa, to).forEach(node => {\n if (!set)\n out.push([term, set = []]);\n if (set.indexOf(node) == -1)\n set.push(node);\n });\n });\n });\n let state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1);\n for (let i = 0; i < out.length; i++) {\n let states = out[i][1].sort(cmp);\n state.next.push({ type: out[i][0], next: labeled[states.join(\",\")] || explore(states) });\n }\n return state;\n }\n}\nfunction checkForDeadEnds(match, stream) {\n for (let i = 0, work = [match]; i < work.length; i++) {\n let state = work[i], dead = !state.validEnd, nodes = [];\n for (let j = 0; j < state.next.length; j++) {\n let { type, next } = state.next[j];\n nodes.push(type.name);\n if (dead && !(type.isText || type.hasRequiredAttrs()))\n dead = false;\n if (work.indexOf(next) == -1)\n work.push(next);\n }\n if (dead)\n stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\");\n }\n}\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n let defaults = Object.create(null);\n for (let attrName in attrs) {\n let attr = attrs[attrName];\n if (!attr.hasDefault)\n return null;\n defaults[attrName] = attr.default;\n }\n return defaults;\n}\nfunction computeAttrs(attrs, value) {\n let built = Object.create(null);\n for (let name in attrs) {\n let given = value && value[name];\n if (given === undefined) {\n let attr = attrs[name];\n if (attr.hasDefault)\n given = attr.default;\n else\n throw new RangeError(\"No value supplied for attribute \" + name);\n }\n built[name] = given;\n }\n return built;\n}\nfunction initAttrs(attrs) {\n let result = Object.create(null);\n if (attrs)\n for (let name in attrs)\n result[name] = new Attribute(attrs[name]);\n return result;\n}\n/**\nNode types are objects allocated once per `Schema` and used to\n[tag](https://prosemirror.net/docs/ref/#model.Node.type) `Node` instances. They contain information\nabout the node type, such as its name and what kind of node it\nrepresents.\n*/\nclass NodeType {\n /**\n @internal\n */\n constructor(\n /**\n The name the node type has in this schema.\n */\n name, \n /**\n A link back to the `Schema` the node type belongs to.\n */\n schema, \n /**\n The spec that this type is based on\n */\n spec) {\n this.name = name;\n this.schema = schema;\n this.spec = spec;\n /**\n The set of marks allowed in this node. `null` means all marks\n are allowed.\n */\n this.markSet = null;\n this.groups = spec.group ? spec.group.split(\" \") : [];\n this.attrs = initAttrs(spec.attrs);\n this.defaultAttrs = defaultAttrs(this.attrs);\n this.contentMatch = null;\n this.inlineContent = null;\n this.isBlock = !(spec.inline || name == \"text\");\n this.isText = name == \"text\";\n }\n /**\n True if this is an inline type.\n */\n get isInline() { return !this.isBlock; }\n /**\n True if this is a textblock type, a block that contains inline\n content.\n */\n get isTextblock() { return this.isBlock && this.inlineContent; }\n /**\n True for node types that allow no content.\n */\n get isLeaf() { return this.contentMatch == ContentMatch.empty; }\n /**\n True when this node is an atom, i.e. when it does not have\n directly editable content.\n */\n get isAtom() { return this.isLeaf || !!this.spec.atom; }\n /**\n The node type's [whitespace](https://prosemirror.net/docs/ref/#model.NodeSpec.whitespace) option.\n */\n get whitespace() {\n return this.spec.whitespace || (this.spec.code ? \"pre\" : \"normal\");\n }\n /**\n Tells you whether this node type has any required attributes.\n */\n hasRequiredAttrs() {\n for (let n in this.attrs)\n if (this.attrs[n].isRequired)\n return true;\n return false;\n }\n /**\n Indicates whether this node allows some of the same content as\n the given node type.\n */\n compatibleContent(other) {\n return this == other || this.contentMatch.compatible(other.contentMatch);\n }\n /**\n @internal\n */\n computeAttrs(attrs) {\n if (!attrs && this.defaultAttrs)\n return this.defaultAttrs;\n else\n return computeAttrs(this.attrs, attrs);\n }\n /**\n Create a `Node` of this type. The given attributes are\n checked and defaulted (you can pass `null` to use the type's\n defaults entirely, if no required attributes exist). `content`\n may be a `Fragment`, a node, an array of nodes, or\n `null`. Similarly `marks` may be `null` to default to the empty\n set of marks.\n */\n create(attrs = null, content, marks) {\n if (this.isText)\n throw new Error(\"NodeType.create can't construct text nodes\");\n return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but check the given content\n against the node type's content restrictions, and throw an error\n if it doesn't match.\n */\n createChecked(attrs = null, content, marks) {\n content = Fragment.from(content);\n this.checkContent(content);\n return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but see if it is\n necessary to add nodes to the start or end of the given fragment\n to make it fit the node. If no fitting wrapping can be found,\n return null. Note that, due to the fact that required nodes can\n always be created, this will always succeed if you pass null or\n `Fragment.empty` as content.\n */\n createAndFill(attrs = null, content, marks) {\n attrs = this.computeAttrs(attrs);\n content = Fragment.from(content);\n if (content.size) {\n let before = this.contentMatch.fillBefore(content);\n if (!before)\n return null;\n content = before.append(content);\n }\n let matched = this.contentMatch.matchFragment(content);\n let after = matched && matched.fillBefore(Fragment.empty, true);\n if (!after)\n return null;\n return new Node(this, attrs, content.append(after), Mark.setFrom(marks));\n }\n /**\n Returns true if the given fragment is valid content for this node\n type with the given attributes.\n */\n validContent(content) {\n let result = this.contentMatch.matchFragment(content);\n if (!result || !result.validEnd)\n return false;\n for (let i = 0; i < content.childCount; i++)\n if (!this.allowsMarks(content.child(i).marks))\n return false;\n return true;\n }\n /**\n Throws a RangeError if the given fragment is not valid content for this\n node type.\n @internal\n */\n checkContent(content) {\n if (!this.validContent(content))\n throw new RangeError(`Invalid content for node ${this.name}: ${content.toString().slice(0, 50)}`);\n }\n /**\n Check whether the given mark type is allowed in this node.\n */\n allowsMarkType(markType) {\n return this.markSet == null || this.markSet.indexOf(markType) > -1;\n }\n /**\n Test whether the given set of marks are allowed in this node.\n */\n allowsMarks(marks) {\n if (this.markSet == null)\n return true;\n for (let i = 0; i < marks.length; i++)\n if (!this.allowsMarkType(marks[i].type))\n return false;\n return true;\n }\n /**\n Removes the marks that are not allowed in this node from the given set.\n */\n allowedMarks(marks) {\n if (this.markSet == null)\n return marks;\n let copy;\n for (let i = 0; i < marks.length; i++) {\n if (!this.allowsMarkType(marks[i].type)) {\n if (!copy)\n copy = marks.slice(0, i);\n }\n else if (copy) {\n copy.push(marks[i]);\n }\n }\n return !copy ? marks : copy.length ? copy : Mark.none;\n }\n /**\n @internal\n */\n static compile(nodes, schema) {\n let result = Object.create(null);\n nodes.forEach((name, spec) => result[name] = new NodeType(name, schema, spec));\n let topType = schema.spec.topNode || \"doc\";\n if (!result[topType])\n throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\");\n if (!result.text)\n throw new RangeError(\"Every schema needs a 'text' type\");\n for (let _ in result.text.attrs)\n throw new RangeError(\"The text node type should not have attributes\");\n return result;\n }\n}\n// Attribute descriptors\nclass Attribute {\n constructor(options) {\n this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\");\n this.default = options.default;\n }\n get isRequired() {\n return !this.hasDefault;\n }\n}\n// Marks\n/**\nLike nodes, marks (which are associated with nodes to signify\nthings like emphasis or being part of a link) are\n[tagged](https://prosemirror.net/docs/ref/#model.Mark.type) with type objects, which are\ninstantiated once per `Schema`.\n*/\nclass MarkType {\n /**\n @internal\n */\n constructor(\n /**\n The name of the mark type.\n */\n name, \n /**\n @internal\n */\n rank, \n /**\n The schema that this mark type instance is part of.\n */\n schema, \n /**\n The spec on which the type is based.\n */\n spec) {\n this.name = name;\n this.rank = rank;\n this.schema = schema;\n this.spec = spec;\n this.attrs = initAttrs(spec.attrs);\n this.excluded = null;\n let defaults = defaultAttrs(this.attrs);\n this.instance = defaults ? new Mark(this, defaults) : null;\n }\n /**\n Create a mark of this type. `attrs` may be `null` or an object\n containing only some of the mark's attributes. The others, if\n they have defaults, will be added.\n */\n create(attrs = null) {\n if (!attrs && this.instance)\n return this.instance;\n return new Mark(this, computeAttrs(this.attrs, attrs));\n }\n /**\n @internal\n */\n static compile(marks, schema) {\n let result = Object.create(null), rank = 0;\n marks.forEach((name, spec) => result[name] = new MarkType(name, rank++, schema, spec));\n return result;\n }\n /**\n When there is a mark of this type in the given set, a new set\n without it is returned. Otherwise, the input set is returned.\n */\n removeFromSet(set) {\n for (var i = 0; i < set.length; i++)\n if (set[i].type == this) {\n set = set.slice(0, i).concat(set.slice(i + 1));\n i--;\n }\n return set;\n }\n /**\n Tests whether there is a mark of this type in the given set.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (set[i].type == this)\n return set[i];\n }\n /**\n Queries whether a given mark type is\n [excluded](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) by this one.\n */\n excludes(other) {\n return this.excluded.indexOf(other) > -1;\n }\n}\n/**\nA document schema. Holds [node](https://prosemirror.net/docs/ref/#model.NodeType) and [mark\ntype](https://prosemirror.net/docs/ref/#model.MarkType) objects for the nodes and marks that may\noccur in conforming documents, and provides functionality for\ncreating and deserializing such documents.\n\nWhen given, the type parameters provide the names of the nodes and\nmarks in this schema.\n*/\nclass Schema {\n /**\n Construct a schema from a schema [specification](https://prosemirror.net/docs/ref/#model.SchemaSpec).\n */\n constructor(spec) {\n /**\n An object for storing whatever values modules may want to\n compute and cache per schema. (If you want to store something\n in it, try to use property names unlikely to clash.)\n */\n this.cached = Object.create(null);\n let instanceSpec = this.spec = {};\n for (let prop in spec)\n instanceSpec[prop] = spec[prop];\n instanceSpec.nodes = OrderedMap.from(spec.nodes),\n instanceSpec.marks = OrderedMap.from(spec.marks || {}),\n this.nodes = NodeType.compile(this.spec.nodes, this);\n this.marks = MarkType.compile(this.spec.marks, this);\n let contentExprCache = Object.create(null);\n for (let prop in this.nodes) {\n if (prop in this.marks)\n throw new RangeError(prop + \" can not be both a node and a mark\");\n let type = this.nodes[prop], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks;\n type.contentMatch = contentExprCache[contentExpr] ||\n (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes));\n type.inlineContent = type.contentMatch.inlineContent;\n type.markSet = markExpr == \"_\" ? null :\n markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n markExpr == \"\" || !type.inlineContent ? [] : null;\n }\n for (let prop in this.marks) {\n let type = this.marks[prop], excl = type.spec.excludes;\n type.excluded = excl == null ? [type] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"));\n }\n this.nodeFromJSON = this.nodeFromJSON.bind(this);\n this.markFromJSON = this.markFromJSON.bind(this);\n this.topNodeType = this.nodes[this.spec.topNode || \"doc\"];\n this.cached.wrappings = Object.create(null);\n }\n /**\n Create a node in this schema. The `type` may be a string or a\n `NodeType` instance. Attributes will be extended with defaults,\n `content` may be a `Fragment`, `null`, a `Node`, or an array of\n nodes.\n */\n node(type, attrs = null, content, marks) {\n if (typeof type == \"string\")\n type = this.nodeType(type);\n else if (!(type instanceof NodeType))\n throw new RangeError(\"Invalid node type: \" + type);\n else if (type.schema != this)\n throw new RangeError(\"Node type from different schema used (\" + type.name + \")\");\n return type.createChecked(attrs, content, marks);\n }\n /**\n Create a text node in the schema. Empty text nodes are not\n allowed.\n */\n text(text, marks) {\n let type = this.nodes.text;\n return new TextNode(type, type.defaultAttrs, text, Mark.setFrom(marks));\n }\n /**\n Create a mark with the given type and attributes.\n */\n mark(type, attrs) {\n if (typeof type == \"string\")\n type = this.marks[type];\n return type.create(attrs);\n }\n /**\n Deserialize a node from its JSON representation. This method is\n bound.\n */\n nodeFromJSON(json) {\n return Node.fromJSON(this, json);\n }\n /**\n Deserialize a mark from its JSON representation. This method is\n bound.\n */\n markFromJSON(json) {\n return Mark.fromJSON(this, json);\n }\n /**\n @internal\n */\n nodeType(name) {\n let found = this.nodes[name];\n if (!found)\n throw new RangeError(\"Unknown node type: \" + name);\n return found;\n }\n}\nfunction gatherMarks(schema, marks) {\n let found = [];\n for (let i = 0; i < marks.length; i++) {\n let name = marks[i], mark = schema.marks[name], ok = mark;\n if (mark) {\n found.push(mark);\n }\n else {\n for (let prop in schema.marks) {\n let mark = schema.marks[prop];\n if (name == \"_\" || (mark.spec.group && mark.spec.group.split(\" \").indexOf(name) > -1))\n found.push(ok = mark);\n }\n }\n if (!ok)\n throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\");\n }\n return found;\n}\n\n/**\nA DOM parser represents a strategy for parsing DOM content into a\nProseMirror document conforming to a given schema. Its behavior is\ndefined by an array of [rules](https://prosemirror.net/docs/ref/#model.ParseRule).\n*/\nclass DOMParser {\n /**\n Create a parser that targets the given schema, using the given\n parsing rules.\n */\n constructor(\n /**\n The schema into which the parser parses.\n */\n schema, \n /**\n The set of [parse rules](https://prosemirror.net/docs/ref/#model.ParseRule) that the parser\n uses, in order of precedence.\n */\n rules) {\n this.schema = schema;\n this.rules = rules;\n /**\n @internal\n */\n this.tags = [];\n /**\n @internal\n */\n this.styles = [];\n rules.forEach(rule => {\n if (rule.tag)\n this.tags.push(rule);\n else if (rule.style)\n this.styles.push(rule);\n });\n // Only normalize list elements when lists in the schema can't directly contain themselves\n this.normalizeLists = !this.tags.some(r => {\n if (!/^(ul|ol)\\b/.test(r.tag) || !r.node)\n return false;\n let node = schema.nodes[r.node];\n return node.contentMatch.matchType(node);\n });\n }\n /**\n Parse a document from the content of a DOM node.\n */\n parse(dom, options = {}) {\n let context = new ParseContext(this, options, false);\n context.addAll(dom, options.from, options.to);\n return context.finish();\n }\n /**\n Parses the content of the given DOM node, like\n [`parse`](https://prosemirror.net/docs/ref/#model.DOMParser.parse), and takes the same set of\n options. But unlike that method, which produces a whole node,\n this one returns a slice that is open at the sides, meaning that\n the schema constraints aren't applied to the start of nodes to\n the left of the input and the end of nodes at the end.\n */\n parseSlice(dom, options = {}) {\n let context = new ParseContext(this, options, true);\n context.addAll(dom, options.from, options.to);\n return Slice.maxOpen(context.finish());\n }\n /**\n @internal\n */\n matchTag(dom, context, after) {\n for (let i = after ? this.tags.indexOf(after) + 1 : 0; i < this.tags.length; i++) {\n let rule = this.tags[i];\n if (matches(dom, rule.tag) &&\n (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n (!rule.context || context.matchesContext(rule.context))) {\n if (rule.getAttrs) {\n let result = rule.getAttrs(dom);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n }\n /**\n @internal\n */\n matchStyle(prop, value, context, after) {\n for (let i = after ? this.styles.indexOf(after) + 1 : 0; i < this.styles.length; i++) {\n let rule = this.styles[i], style = rule.style;\n if (style.indexOf(prop) != 0 ||\n rule.context && !context.matchesContext(rule.context) ||\n // Test that the style string either precisely matches the prop,\n // or has an '=' sign after the prop, followed by the given\n // value.\n style.length > prop.length &&\n (style.charCodeAt(prop.length) != 61 || style.slice(prop.length + 1) != value))\n continue;\n if (rule.getAttrs) {\n let result = rule.getAttrs(value);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n /**\n @internal\n */\n static schemaRules(schema) {\n let result = [];\n function insert(rule) {\n let priority = rule.priority == null ? 50 : rule.priority, i = 0;\n for (; i < result.length; i++) {\n let next = result[i], nextPriority = next.priority == null ? 50 : next.priority;\n if (nextPriority < priority)\n break;\n }\n result.splice(i, 0, rule);\n }\n for (let name in schema.marks) {\n let rules = schema.marks[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.mark || rule.ignore || rule.clearMark))\n rule.mark = name;\n });\n }\n for (let name in schema.nodes) {\n let rules = schema.nodes[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.node || rule.ignore || rule.mark))\n rule.node = name;\n });\n }\n return result;\n }\n /**\n Construct a DOM parser using the parsing rules listed in a\n schema's [node specs](https://prosemirror.net/docs/ref/#model.NodeSpec.parseDOM), reordered by\n [priority](https://prosemirror.net/docs/ref/#model.ParseRule.priority).\n */\n static fromSchema(schema) {\n return schema.cached.domParser ||\n (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)));\n }\n}\nconst blockTags = {\n address: true, article: true, aside: true, blockquote: true, canvas: true,\n dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n};\nconst ignoreTags = {\n head: true, noscript: true, object: true, script: true, style: true, title: true\n};\nconst listTags = { ol: true, ul: true };\n// Using a bitfield for node context options\nconst OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;\nfunction wsOptionsFor(type, preserveWhitespace, base) {\n if (preserveWhitespace != null)\n return (preserveWhitespace ? OPT_PRESERVE_WS : 0) |\n (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0);\n return type && type.whitespace == \"pre\" ? OPT_PRESERVE_WS | OPT_PRESERVE_WS_FULL : base & ~OPT_OPEN_LEFT;\n}\nclass NodeContext {\n constructor(type, attrs, \n // Marks applied to this node itself\n marks, \n // Marks that can't apply here, but will be used in children if possible\n pendingMarks, solid, match, options) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.pendingMarks = pendingMarks;\n this.solid = solid;\n this.options = options;\n this.content = [];\n // Marks applied to the node's children\n this.activeMarks = Mark.none;\n // Nested Marks with same type\n this.stashMarks = [];\n this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch);\n }\n findWrapping(node) {\n if (!this.match) {\n if (!this.type)\n return [];\n let fill = this.type.contentMatch.fillBefore(Fragment.from(node));\n if (fill) {\n this.match = this.type.contentMatch.matchFragment(fill);\n }\n else {\n let start = this.type.contentMatch, wrap;\n if (wrap = start.findWrapping(node.type)) {\n this.match = start;\n return wrap;\n }\n else {\n return null;\n }\n }\n }\n return this.match.findWrapping(node.type);\n }\n finish(openEnd) {\n if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n let last = this.content[this.content.length - 1], m;\n if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n let text = last;\n if (last.text.length == m[0].length)\n this.content.pop();\n else\n this.content[this.content.length - 1] = text.withText(text.text.slice(0, text.text.length - m[0].length));\n }\n }\n let content = Fragment.from(this.content);\n if (!openEnd && this.match)\n content = content.append(this.match.fillBefore(Fragment.empty, true));\n return this.type ? this.type.create(this.attrs, content, this.marks) : content;\n }\n popFromStashMark(mark) {\n for (let i = this.stashMarks.length - 1; i >= 0; i--)\n if (mark.eq(this.stashMarks[i]))\n return this.stashMarks.splice(i, 1)[0];\n }\n applyPending(nextType) {\n for (let i = 0, pending = this.pendingMarks; i < pending.length; i++) {\n let mark = pending[i];\n if ((this.type ? this.type.allowsMarkType(mark.type) : markMayApply(mark.type, nextType)) &&\n !mark.isInSet(this.activeMarks)) {\n this.activeMarks = mark.addToSet(this.activeMarks);\n this.pendingMarks = mark.removeFromSet(this.pendingMarks);\n }\n }\n }\n inlineContext(node) {\n if (this.type)\n return this.type.inlineContent;\n if (this.content.length)\n return this.content[0].isInline;\n return node.parentNode && !blockTags.hasOwnProperty(node.parentNode.nodeName.toLowerCase());\n }\n}\nclass ParseContext {\n constructor(\n // The parser we are using.\n parser, \n // The options passed to this parse.\n options, isOpen) {\n this.parser = parser;\n this.options = options;\n this.isOpen = isOpen;\n this.open = 0;\n let topNode = options.topNode, topContext;\n let topOptions = wsOptionsFor(null, options.preserveWhitespace, 0) | (isOpen ? OPT_OPEN_LEFT : 0);\n if (topNode)\n topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, Mark.none, true, options.topMatch || topNode.type.contentMatch, topOptions);\n else if (isOpen)\n topContext = new NodeContext(null, null, Mark.none, Mark.none, true, null, topOptions);\n else\n topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, Mark.none, true, null, topOptions);\n this.nodes = [topContext];\n this.find = options.findPositions;\n this.needsBlock = false;\n }\n get top() {\n return this.nodes[this.open];\n }\n // Add a DOM node to the content. Text is inserted as text node,\n // otherwise, the node is passed to `addElement` or, if it has a\n // `style` attribute, `addElementWithStyles`.\n addDOM(dom) {\n if (dom.nodeType == 3)\n this.addTextNode(dom);\n else if (dom.nodeType == 1)\n this.addElement(dom);\n }\n withStyleRules(dom, f) {\n let style = dom.getAttribute(\"style\");\n if (!style)\n return f();\n let marks = this.readStyles(parseStyles(style));\n if (!marks)\n return; // A style with ignore: true\n let [addMarks, removeMarks] = marks, top = this.top;\n for (let i = 0; i < removeMarks.length; i++)\n this.removePendingMark(removeMarks[i], top);\n for (let i = 0; i < addMarks.length; i++)\n this.addPendingMark(addMarks[i]);\n f();\n for (let i = 0; i < addMarks.length; i++)\n this.removePendingMark(addMarks[i], top);\n for (let i = 0; i < removeMarks.length; i++)\n this.addPendingMark(removeMarks[i]);\n }\n addTextNode(dom) {\n let value = dom.nodeValue;\n let top = this.top;\n if (top.options & OPT_PRESERVE_WS_FULL ||\n top.inlineContext(dom) ||\n /[^ \\t\\r\\n\\u000c]/.test(value)) {\n if (!(top.options & OPT_PRESERVE_WS)) {\n value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \");\n // If this starts with whitespace, and there is no node before it, or\n // a hard break, or a text node that ends with whitespace, strip the\n // leading space.\n if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n let nodeBefore = top.content[top.content.length - 1];\n let domNodeBefore = dom.previousSibling;\n if (!nodeBefore ||\n (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n value = value.slice(1);\n }\n }\n else if (!(top.options & OPT_PRESERVE_WS_FULL)) {\n value = value.replace(/\\r?\\n|\\r/g, \" \");\n }\n else {\n value = value.replace(/\\r\\n?/g, \"\\n\");\n }\n if (value)\n this.insertNode(this.parser.schema.text(value));\n this.findInText(dom);\n }\n else {\n this.findInside(dom);\n }\n }\n // Try to find a handler for the given tag and use that to parse. If\n // none is found, the element's content nodes are added directly.\n addElement(dom, matchAfter) {\n let name = dom.nodeName.toLowerCase(), ruleID;\n if (listTags.hasOwnProperty(name) && this.parser.normalizeLists)\n normalizeList(dom);\n let rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) ||\n (ruleID = this.parser.matchTag(dom, this, matchAfter));\n if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n this.findInside(dom);\n this.ignoreFallback(dom);\n }\n else if (!rule || rule.skip || rule.closeParent) {\n if (rule && rule.closeParent)\n this.open = Math.max(0, this.open - 1);\n else if (rule && rule.skip.nodeType)\n dom = rule.skip;\n let sync, top = this.top, oldNeedsBlock = this.needsBlock;\n if (blockTags.hasOwnProperty(name)) {\n if (top.content.length && top.content[0].isInline && this.open) {\n this.open--;\n top = this.top;\n }\n sync = true;\n if (!top.type)\n this.needsBlock = true;\n }\n else if (!dom.firstChild) {\n this.leafFallback(dom);\n return;\n }\n if (rule && rule.skip)\n this.addAll(dom);\n else\n this.withStyleRules(dom, () => this.addAll(dom));\n if (sync)\n this.sync(top);\n this.needsBlock = oldNeedsBlock;\n }\n else {\n this.withStyleRules(dom, () => {\n this.addElementByRule(dom, rule, rule.consuming === false ? ruleID : undefined);\n });\n }\n }\n // Called for leaf DOM nodes that would otherwise be ignored\n leafFallback(dom) {\n if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\"));\n }\n // Called for ignored nodes\n ignoreFallback(dom) {\n // Ignored BR nodes should at least create an inline context\n if (dom.nodeName == \"BR\" && (!this.top.type || !this.top.type.inlineContent))\n this.findPlace(this.parser.schema.text(\"-\"));\n }\n // Run any style parser associated with the node's styles. Either\n // return an array of marks, or null to indicate some of the styles\n // had a rule with `ignore` set.\n readStyles(styles) {\n let add = Mark.none, remove = Mark.none;\n for (let i = 0; i < styles.length; i += 2) {\n for (let after = undefined;;) {\n let rule = this.parser.matchStyle(styles[i], styles[i + 1], this, after);\n if (!rule)\n break;\n if (rule.ignore)\n return null;\n if (rule.clearMark) {\n this.top.pendingMarks.concat(this.top.activeMarks).forEach(m => {\n if (rule.clearMark(m))\n remove = m.addToSet(remove);\n });\n }\n else {\n add = this.parser.schema.marks[rule.mark].create(rule.attrs).addToSet(add);\n }\n if (rule.consuming === false)\n after = rule;\n else\n break;\n }\n }\n return [add, remove];\n }\n // Look up a handler for the given node. If none are found, return\n // false. Otherwise, apply it, use its return value to drive the way\n // the node's content is wrapped, and return true.\n addElementByRule(dom, rule, continueAfter) {\n let sync, nodeType, mark;\n if (rule.node) {\n nodeType = this.parser.schema.nodes[rule.node];\n if (!nodeType.isLeaf) {\n sync = this.enter(nodeType, rule.attrs || null, rule.preserveWhitespace);\n }\n else if (!this.insertNode(nodeType.create(rule.attrs))) {\n this.leafFallback(dom);\n }\n }\n else {\n let markType = this.parser.schema.marks[rule.mark];\n mark = markType.create(rule.attrs);\n this.addPendingMark(mark);\n }\n let startIn = this.top;\n if (nodeType && nodeType.isLeaf) {\n this.findInside(dom);\n }\n else if (continueAfter) {\n this.addElement(dom, continueAfter);\n }\n else if (rule.getContent) {\n this.findInside(dom);\n rule.getContent(dom, this.parser.schema).forEach(node => this.insertNode(node));\n }\n else {\n let contentDOM = dom;\n if (typeof rule.contentElement == \"string\")\n contentDOM = dom.querySelector(rule.contentElement);\n else if (typeof rule.contentElement == \"function\")\n contentDOM = rule.contentElement(dom);\n else if (rule.contentElement)\n contentDOM = rule.contentElement;\n this.findAround(dom, contentDOM, true);\n this.addAll(contentDOM);\n }\n if (sync && this.sync(startIn))\n this.open--;\n if (mark)\n this.removePendingMark(mark, startIn);\n }\n // Add all child nodes between `startIndex` and `endIndex` (or the\n // whole node, if not given). If `sync` is passed, use it to\n // synchronize after every block element.\n addAll(parent, startIndex, endIndex) {\n let index = startIndex || 0;\n for (let dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild, end = endIndex == null ? null : parent.childNodes[endIndex]; dom != end; dom = dom.nextSibling, ++index) {\n this.findAtPoint(parent, index);\n this.addDOM(dom);\n }\n this.findAtPoint(parent, index);\n }\n // Try to find a way to fit the given node type into the current\n // context. May add intermediate wrappers and/or leave non-solid\n // nodes that we're in.\n findPlace(node) {\n let route, sync;\n for (let depth = this.open; depth >= 0; depth--) {\n let cx = this.nodes[depth];\n let found = cx.findWrapping(node);\n if (found && (!route || route.length > found.length)) {\n route = found;\n sync = cx;\n if (!found.length)\n break;\n }\n if (cx.solid)\n break;\n }\n if (!route)\n return false;\n this.sync(sync);\n for (let i = 0; i < route.length; i++)\n this.enterInner(route[i], null, false);\n return true;\n }\n // Try to insert the given node, adjusting the context when needed.\n insertNode(node) {\n if (node.isInline && this.needsBlock && !this.top.type) {\n let block = this.textblockFromContext();\n if (block)\n this.enterInner(block);\n }\n if (this.findPlace(node)) {\n this.closeExtra();\n let top = this.top;\n top.applyPending(node.type);\n if (top.match)\n top.match = top.match.matchType(node.type);\n let marks = top.activeMarks;\n for (let i = 0; i < node.marks.length; i++)\n if (!top.type || top.type.allowsMarkType(node.marks[i].type))\n marks = node.marks[i].addToSet(marks);\n top.content.push(node.mark(marks));\n return true;\n }\n return false;\n }\n // Try to start a node of the given type, adjusting the context when\n // necessary.\n enter(type, attrs, preserveWS) {\n let ok = this.findPlace(type.create(attrs));\n if (ok)\n this.enterInner(type, attrs, true, preserveWS);\n return ok;\n }\n // Open a node of the given type\n enterInner(type, attrs = null, solid = false, preserveWS) {\n this.closeExtra();\n let top = this.top;\n top.applyPending(type);\n top.match = top.match && top.match.matchType(type);\n let options = wsOptionsFor(type, preserveWS, top.options);\n if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0)\n options |= OPT_OPEN_LEFT;\n this.nodes.push(new NodeContext(type, attrs, top.activeMarks, top.pendingMarks, solid, null, options));\n this.open++;\n }\n // Make sure all nodes above this.open are finished and added to\n // their parents\n closeExtra(openEnd = false) {\n let i = this.nodes.length - 1;\n if (i > this.open) {\n for (; i > this.open; i--)\n this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd));\n this.nodes.length = this.open + 1;\n }\n }\n finish() {\n this.open = 0;\n this.closeExtra(this.isOpen);\n return this.nodes[0].finish(this.isOpen || this.options.topOpen);\n }\n sync(to) {\n for (let i = this.open; i >= 0; i--)\n if (this.nodes[i] == to) {\n this.open = i;\n return true;\n }\n return false;\n }\n get currentPos() {\n this.closeExtra();\n let pos = 0;\n for (let i = this.open; i >= 0; i--) {\n let content = this.nodes[i].content;\n for (let j = content.length - 1; j >= 0; j--)\n pos += content[j].nodeSize;\n if (i)\n pos++;\n }\n return pos;\n }\n findAtPoint(parent, offset) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == parent && this.find[i].offset == offset)\n this.find[i].pos = this.currentPos;\n }\n }\n findInside(parent) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n this.find[i].pos = this.currentPos;\n }\n }\n findAround(parent, content, before) {\n if (parent != content && this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n let pos = content.compareDocumentPosition(this.find[i].node);\n if (pos & (before ? 2 : 4))\n this.find[i].pos = this.currentPos;\n }\n }\n }\n findInText(textNode) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == textNode)\n this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset);\n }\n }\n // Determines whether the given context string matches this context.\n matchesContext(context) {\n if (context.indexOf(\"|\") > -1)\n return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this);\n let parts = context.split(\"/\");\n let option = this.options.context;\n let useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type);\n let minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1);\n let match = (i, depth) => {\n for (; i >= 0; i--) {\n let part = parts[i];\n if (part == \"\") {\n if (i == parts.length - 1 || i == 0)\n continue;\n for (; depth >= minDepth; depth--)\n if (match(i - 1, depth))\n return true;\n return false;\n }\n else {\n let next = depth > 0 || (depth == 0 && useRoot) ? this.nodes[depth].type\n : option && depth >= minDepth ? option.node(depth - minDepth).type\n : null;\n if (!next || (next.name != part && next.groups.indexOf(part) == -1))\n return false;\n depth--;\n }\n }\n return true;\n };\n return match(parts.length - 1, this.open);\n }\n textblockFromContext() {\n let $context = this.options.context;\n if ($context)\n for (let d = $context.depth; d >= 0; d--) {\n let deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType;\n if (deflt && deflt.isTextblock && deflt.defaultAttrs)\n return deflt;\n }\n for (let name in this.parser.schema.nodes) {\n let type = this.parser.schema.nodes[name];\n if (type.isTextblock && type.defaultAttrs)\n return type;\n }\n }\n addPendingMark(mark) {\n let found = findSameMarkInSet(mark, this.top.pendingMarks);\n if (found)\n this.top.stashMarks.push(found);\n this.top.pendingMarks = mark.addToSet(this.top.pendingMarks);\n }\n removePendingMark(mark, upto) {\n for (let depth = this.open; depth >= 0; depth--) {\n let level = this.nodes[depth];\n let found = level.pendingMarks.lastIndexOf(mark);\n if (found > -1) {\n level.pendingMarks = mark.removeFromSet(level.pendingMarks);\n }\n else {\n level.activeMarks = mark.removeFromSet(level.activeMarks);\n let stashMark = level.popFromStashMark(mark);\n if (stashMark && level.type && level.type.allowsMarkType(stashMark.type))\n level.activeMarks = stashMark.addToSet(level.activeMarks);\n }\n if (level == upto)\n break;\n }\n }\n}\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n for (let child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n let name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null;\n if (name && listTags.hasOwnProperty(name) && prevItem) {\n prevItem.appendChild(child);\n child = prevItem;\n }\n else if (name == \"li\") {\n prevItem = child;\n }\n else if (name) {\n prevItem = null;\n }\n }\n}\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector);\n}\n// Tokenize a style attribute into property/value pairs.\nfunction parseStyles(style) {\n let re = /\\s*([\\w-]+)\\s*:\\s*([^;]+)/g, m, result = [];\n while (m = re.exec(style))\n result.push(m[1], m[2].trim());\n return result;\n}\nfunction copy(obj) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n return copy;\n}\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n let nodes = nodeType.schema.nodes;\n for (let name in nodes) {\n let parent = nodes[name];\n if (!parent.allowsMarkType(markType))\n continue;\n let seen = [], scan = (match) => {\n seen.push(match);\n for (let i = 0; i < match.edgeCount; i++) {\n let { type, next } = match.edge(i);\n if (type == nodeType)\n return true;\n if (seen.indexOf(next) < 0 && scan(next))\n return true;\n }\n };\n if (scan(parent.contentMatch))\n return true;\n }\n}\nfunction findSameMarkInSet(mark, set) {\n for (let i = 0; i < set.length; i++) {\n if (mark.eq(set[i]))\n return set[i];\n }\n}\n\n/**\nA DOM serializer knows how to convert ProseMirror nodes and\nmarks of various types to DOM nodes.\n*/\nclass DOMSerializer {\n /**\n Create a serializer. `nodes` should map node names to functions\n that take a node and return a description of the corresponding\n DOM. `marks` does the same for mark names, but also gets an\n argument that tells it whether the mark's content is block or\n inline content (for typical use, it'll always be inline). A mark\n serializer may be `null` to indicate that marks of that type\n should not be serialized.\n */\n constructor(\n /**\n The node serialization functions.\n */\n nodes, \n /**\n The mark serialization functions.\n */\n marks) {\n this.nodes = nodes;\n this.marks = marks;\n }\n /**\n Serialize the content of this fragment to a DOM fragment. When\n not in the browser, the `document` option, containing a DOM\n document, should be passed so that the serializer can create\n nodes.\n */\n serializeFragment(fragment, options = {}, target) {\n if (!target)\n target = doc(options).createDocumentFragment();\n let top = target, active = [];\n fragment.forEach(node => {\n if (active.length || node.marks.length) {\n let keep = 0, rendered = 0;\n while (keep < active.length && rendered < node.marks.length) {\n let next = node.marks[rendered];\n if (!this.marks[next.type.name]) {\n rendered++;\n continue;\n }\n if (!next.eq(active[keep][0]) || next.type.spec.spanning === false)\n break;\n keep++;\n rendered++;\n }\n while (keep < active.length)\n top = active.pop()[1];\n while (rendered < node.marks.length) {\n let add = node.marks[rendered++];\n let markDOM = this.serializeMark(add, node.isInline, options);\n if (markDOM) {\n active.push([add, top]);\n top.appendChild(markDOM.dom);\n top = markDOM.contentDOM || markDOM.dom;\n }\n }\n }\n top.appendChild(this.serializeNodeInner(node, options));\n });\n return target;\n }\n /**\n @internal\n */\n serializeNodeInner(node, options) {\n let { dom, contentDOM } = DOMSerializer.renderSpec(doc(options), this.nodes[node.type.name](node));\n if (contentDOM) {\n if (node.isLeaf)\n throw new RangeError(\"Content hole not allowed in a leaf node spec\");\n this.serializeFragment(node.content, options, contentDOM);\n }\n return dom;\n }\n /**\n Serialize this node to a DOM node. This can be useful when you\n need to serialize a part of a document, as opposed to the whole\n document. To serialize a whole document, use\n [`serializeFragment`](https://prosemirror.net/docs/ref/#model.DOMSerializer.serializeFragment) on\n its [content](https://prosemirror.net/docs/ref/#model.Node.content).\n */\n serializeNode(node, options = {}) {\n let dom = this.serializeNodeInner(node, options);\n for (let i = node.marks.length - 1; i >= 0; i--) {\n let wrap = this.serializeMark(node.marks[i], node.isInline, options);\n if (wrap) {\n (wrap.contentDOM || wrap.dom).appendChild(dom);\n dom = wrap.dom;\n }\n }\n return dom;\n }\n /**\n @internal\n */\n serializeMark(mark, inline, options = {}) {\n let toDOM = this.marks[mark.type.name];\n return toDOM && DOMSerializer.renderSpec(doc(options), toDOM(mark, inline));\n }\n /**\n Render an [output spec](https://prosemirror.net/docs/ref/#model.DOMOutputSpec) to a DOM node. If\n the spec has a hole (zero) in it, `contentDOM` will point at the\n node with the hole.\n */\n static renderSpec(doc, structure, xmlNS = null) {\n if (typeof structure == \"string\")\n return { dom: doc.createTextNode(structure) };\n if (structure.nodeType != null)\n return { dom: structure };\n if (structure.dom && structure.dom.nodeType != null)\n return structure;\n let tagName = structure[0], space = tagName.indexOf(\" \");\n if (space > 0) {\n xmlNS = tagName.slice(0, space);\n tagName = tagName.slice(space + 1);\n }\n let contentDOM;\n let dom = (xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName));\n let attrs = structure[1], start = 1;\n if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2;\n for (let name in attrs)\n if (attrs[name] != null) {\n let space = name.indexOf(\" \");\n if (space > 0)\n dom.setAttributeNS(name.slice(0, space), name.slice(space + 1), attrs[name]);\n else\n dom.setAttribute(name, attrs[name]);\n }\n }\n for (let i = start; i < structure.length; i++) {\n let child = structure[i];\n if (child === 0) {\n if (i < structure.length - 1 || i > start)\n throw new RangeError(\"Content hole must be the only child of its parent node\");\n return { dom, contentDOM: dom };\n }\n else {\n let { dom: inner, contentDOM: innerContent } = DOMSerializer.renderSpec(doc, child, xmlNS);\n dom.appendChild(inner);\n if (innerContent) {\n if (contentDOM)\n throw new RangeError(\"Multiple content holes\");\n contentDOM = innerContent;\n }\n }\n }\n return { dom, contentDOM };\n }\n /**\n Build a serializer using the [`toDOM`](https://prosemirror.net/docs/ref/#model.NodeSpec.toDOM)\n properties in a schema's node and mark specs.\n */\n static fromSchema(schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)));\n }\n /**\n Gather the serializers in a schema's node specs into an object.\n This can be useful as a base to build a custom serializer from.\n */\n static nodesFromSchema(schema) {\n let result = gatherToDOM(schema.nodes);\n if (!result.text)\n result.text = node => node.text;\n return result;\n }\n /**\n Gather the serializers in a schema's mark specs into an object.\n */\n static marksFromSchema(schema) {\n return gatherToDOM(schema.marks);\n }\n}\nfunction gatherToDOM(obj) {\n let result = {};\n for (let name in obj) {\n let toDOM = obj[name].spec.toDOM;\n if (toDOM)\n result[name] = toDOM;\n }\n return result;\n}\nfunction doc(options) {\n return options.document || window.document;\n}\n\nexport { ContentMatch, DOMParser, DOMSerializer, Fragment, Mark, MarkType, Node, NodeRange, NodeType, ReplaceError, ResolvedPos, Schema, Slice };\n","import { ReplaceError, Slice, Fragment, MarkType, Mark } from 'prosemirror-model';\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\nconst lower16 = 0xffff;\nconst factor16 = Math.pow(2, 16);\nfunction makeRecover(index, offset) { return index + offset * factor16; }\nfunction recoverIndex(value) { return value & lower16; }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16; }\nconst DEL_BEFORE = 1, DEL_AFTER = 2, DEL_ACROSS = 4, DEL_SIDE = 8;\n/**\nAn object representing a mapped position with extra\ninformation.\n*/\nclass MapResult {\n /**\n @internal\n */\n constructor(\n /**\n The mapped version of the position.\n */\n pos, \n /**\n @internal\n */\n delInfo, \n /**\n @internal\n */\n recover) {\n this.pos = pos;\n this.delInfo = delInfo;\n this.recover = recover;\n }\n /**\n Tells you whether the position was deleted, that is, whether the\n step removed the token on the side queried (via the `assoc`)\n argument from the document.\n */\n get deleted() { return (this.delInfo & DEL_SIDE) > 0; }\n /**\n Tells you whether the token before the mapped position was deleted.\n */\n get deletedBefore() { return (this.delInfo & (DEL_BEFORE | DEL_ACROSS)) > 0; }\n /**\n True when the token after the mapped position was deleted.\n */\n get deletedAfter() { return (this.delInfo & (DEL_AFTER | DEL_ACROSS)) > 0; }\n /**\n Tells whether any of the steps mapped through deletes across the\n position (including both the token before and after the\n position).\n */\n get deletedAcross() { return (this.delInfo & DEL_ACROSS) > 0; }\n}\n/**\nA map describing the deletions and insertions made by a step, which\ncan be used to find the correspondence between positions in the\npre-step version of a document and the same position in the\npost-step version.\n*/\nclass StepMap {\n /**\n Create a position map. The modifications to the document are\n represented as an array of numbers, in which each group of three\n represents a modified chunk as `[start, oldSize, newSize]`.\n */\n constructor(\n /**\n @internal\n */\n ranges, \n /**\n @internal\n */\n inverted = false) {\n this.ranges = ranges;\n this.inverted = inverted;\n if (!ranges.length && StepMap.empty)\n return StepMap.empty;\n }\n /**\n @internal\n */\n recover(value) {\n let diff = 0, index = recoverIndex(value);\n if (!this.inverted)\n for (let i = 0; i < index; i++)\n diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1];\n return this.ranges[index * 3] + diff + recoverOffset(value);\n }\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n map(pos, assoc = 1) { return this._map(pos, assoc, true); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n let side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n let result = start + diff + (side < 0 ? 0 : newSize);\n if (simple)\n return result;\n let recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n let del = pos == start ? DEL_AFTER : pos == end ? DEL_BEFORE : DEL_ACROSS;\n if (assoc < 0 ? pos != start : pos != end)\n del |= DEL_SIDE;\n return new MapResult(result, del, recover);\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff, 0, null);\n }\n /**\n @internal\n */\n touches(pos, recover) {\n let diff = 0, index = recoverIndex(recover);\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3)\n return true;\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false;\n }\n /**\n Calls the given function on each of the changed ranges included in\n this map.\n */\n forEach(f) {\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0, diff = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n }\n /**\n Create an inverted version of this map. The result can be used to\n map positions in the post-step document to the pre-step document.\n */\n invert() {\n return new StepMap(this.ranges, !this.inverted);\n }\n /**\n @internal\n */\n toString() {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges);\n }\n /**\n Create a map that moves all positions by offset `n` (which may be\n negative). This can be useful when applying steps meant for a\n sub-document to a larger document, or vice-versa.\n */\n static offset(n) {\n return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n]);\n }\n}\n/**\nA StepMap that contains no changed ranges.\n*/\nStepMap.empty = new StepMap([]);\n/**\nA mapping represents a pipeline of zero or more [step\nmaps](https://prosemirror.net/docs/ref/#transform.StepMap). It has special provisions for losslessly\nhandling mapping positions through a series of steps in which some\nsteps are inverted versions of earlier steps. (This comes up when\n‘[rebasing](/docs/guide/#transform.rebasing)’ steps for\ncollaboration or history management.)\n*/\nclass Mapping {\n /**\n Create a new mapping with the given position maps.\n */\n constructor(\n /**\n The step maps in this mapping.\n */\n maps = [], \n /**\n @internal\n */\n mirror, \n /**\n The starting position in the `maps` array, used when `map` or\n `mapResult` is called.\n */\n from = 0, \n /**\n The end position in the `maps` array.\n */\n to = maps.length) {\n this.maps = maps;\n this.mirror = mirror;\n this.from = from;\n this.to = to;\n }\n /**\n Create a mapping that maps only through a part of this one.\n */\n slice(from = 0, to = this.maps.length) {\n return new Mapping(this.maps, this.mirror, from, to);\n }\n /**\n @internal\n */\n copy() {\n return new Mapping(this.maps.slice(), this.mirror && this.mirror.slice(), this.from, this.to);\n }\n /**\n Add a step map to the end of this mapping. If `mirrors` is\n given, it should be the index of the step map that is the mirror\n image of this one.\n */\n appendMap(map, mirrors) {\n this.to = this.maps.push(map);\n if (mirrors != null)\n this.setMirror(this.maps.length - 1, mirrors);\n }\n /**\n Add all the step maps in a given mapping to this one (preserving\n mirroring information).\n */\n appendMapping(mapping) {\n for (let i = 0, startSize = this.maps.length; i < mapping.maps.length; i++) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i], mirr != null && mirr < i ? startSize + mirr : undefined);\n }\n }\n /**\n Finds the offset of the step map that mirrors the map at the\n given offset, in this mapping (as per the second argument to\n `appendMap`).\n */\n getMirror(n) {\n if (this.mirror)\n for (let i = 0; i < this.mirror.length; i++)\n if (this.mirror[i] == n)\n return this.mirror[i + (i % 2 ? -1 : 1)];\n }\n /**\n @internal\n */\n setMirror(n, m) {\n if (!this.mirror)\n this.mirror = [];\n this.mirror.push(n, m);\n }\n /**\n Append the inverse of the given mapping to this one.\n */\n appendMappingInverted(mapping) {\n for (let i = mapping.maps.length - 1, totalSize = this.maps.length + mapping.maps.length; i >= 0; i--) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : undefined);\n }\n }\n /**\n Create an inverted version of this mapping.\n */\n invert() {\n let inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse;\n }\n /**\n Map a position through this mapping.\n */\n map(pos, assoc = 1) {\n if (this.mirror)\n return this._map(pos, assoc, true);\n for (let i = this.from; i < this.to; i++)\n pos = this.maps[i].map(pos, assoc);\n return pos;\n }\n /**\n Map a position through this mapping, returning a mapping\n result.\n */\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let delInfo = 0;\n for (let i = this.from; i < this.to; i++) {\n let map = this.maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n let corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this.maps[corr].recover(result.recover);\n continue;\n }\n }\n delInfo |= result.delInfo;\n pos = result.pos;\n }\n return simple ? pos : new MapResult(pos, delInfo, null);\n }\n}\n\nconst stepsByID = Object.create(null);\n/**\nA step object represents an atomic change. It generally applies\nonly to the document it was created for, since the positions\nstored in it will only make sense for that document.\n\nNew steps are defined by creating classes that extend `Step`,\noverriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\nmethods, and registering your class with a unique\nJSON-serialization identifier using\n[`Step.jsonID`](https://prosemirror.net/docs/ref/#transform.Step^jsonID).\n*/\nclass Step {\n /**\n Get the step map that represents the changes made by this step,\n and which can be used to transform between positions in the old\n and the new document.\n */\n getMap() { return StepMap.empty; }\n /**\n Try to merge this step with another one, to be applied directly\n after it. Returns the merged step when possible, null if the\n steps can't be merged.\n */\n merge(other) { return null; }\n /**\n Deserialize a step from its JSON representation. Will call\n through to the step class' own implementation of this method.\n */\n static fromJSON(schema, json) {\n if (!json || !json.stepType)\n throw new RangeError(\"Invalid input for Step.fromJSON\");\n let type = stepsByID[json.stepType];\n if (!type)\n throw new RangeError(`No step type ${json.stepType} defined`);\n return type.fromJSON(schema, json);\n }\n /**\n To be able to serialize steps to JSON, each step needs a string\n ID to attach to its JSON representation. Use this method to\n register an ID for your step classes. Try to pick something\n that's unlikely to clash with steps from other modules.\n */\n static jsonID(id, stepClass) {\n if (id in stepsByID)\n throw new RangeError(\"Duplicate use of step JSON ID \" + id);\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass;\n }\n}\n/**\nThe result of [applying](https://prosemirror.net/docs/ref/#transform.Step.apply) a step. Contains either a\nnew document or a failure value.\n*/\nclass StepResult {\n /**\n @internal\n */\n constructor(\n /**\n The transformed document, if successful.\n */\n doc, \n /**\n The failure message, if unsuccessful.\n */\n failed) {\n this.doc = doc;\n this.failed = failed;\n }\n /**\n Create a successful step result.\n */\n static ok(doc) { return new StepResult(doc, null); }\n /**\n Create a failed step result.\n */\n static fail(message) { return new StepResult(null, message); }\n /**\n Call [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) with the given\n arguments. Create a successful result if it succeeds, and a\n failed one if it throws a `ReplaceError`.\n */\n static fromReplace(doc, from, to, slice) {\n try {\n return StepResult.ok(doc.replace(from, to, slice));\n }\n catch (e) {\n if (e instanceof ReplaceError)\n return StepResult.fail(e.message);\n throw e;\n }\n }\n}\n\nfunction mapFragment(fragment, f, parent) {\n let mapped = [];\n for (let i = 0; i < fragment.childCount; i++) {\n let child = fragment.child(i);\n if (child.content.size)\n child = child.copy(mapFragment(child.content, f, child));\n if (child.isInline)\n child = f(child, parent, i);\n mapped.push(child);\n }\n return Fragment.fromArray(mapped);\n}\n/**\nAdd a mark to all inline content between two positions.\n*/\nclass AddMarkStep extends Step {\n /**\n Create a mark step.\n */\n constructor(\n /**\n The start of the marked range.\n */\n from, \n /**\n The end of the marked range.\n */\n to, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n let parent = $from.node($from.sharedDepth(this.to));\n let slice = new Slice(mapFragment(oldSlice.content, (node, parent) => {\n if (!node.isAtom || !parent.type.allowsMarkType(this.mark.type))\n return node;\n return node.mark(this.mark.addToSet(node.marks));\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new RemoveMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new AddMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof AddMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new AddMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\");\n return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addMark\", AddMarkStep);\n/**\nRemove a mark from all inline content between two positions.\n*/\nclass RemoveMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The start of the unmarked range.\n */\n from, \n /**\n The end of the unmarked range.\n */\n to, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to);\n let slice = new Slice(mapFragment(oldSlice.content, node => {\n return node.mark(this.mark.removeFromSet(node.marks));\n }, doc), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new AddMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new RemoveMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof RemoveMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new RemoveMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\");\n return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n/**\nAdd a mark to a specific node.\n*/\nclass AddNodeMarkStep extends Step {\n /**\n Create a node mark step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.addToSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (node) {\n let newSet = this.mark.addToSet(node.marks);\n if (newSet.length == node.marks.length) {\n for (let i = 0; i < node.marks.length; i++)\n if (!node.marks[i].isInSet(newSet))\n return new AddNodeMarkStep(this.pos, node.marks[i]);\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n }\n return new RemoveNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AddNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"addNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for AddNodeMarkStep.fromJSON\");\n return new AddNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addNodeMark\", AddNodeMarkStep);\n/**\nRemove a mark from a specific node.\n*/\nclass RemoveNodeMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.removeFromSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node || !this.mark.isInSet(node.marks))\n return this;\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new RemoveNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"removeNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for RemoveNodeMarkStep.fromJSON\");\n return new RemoveNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeNodeMark\", RemoveNodeMarkStep);\n\n/**\nReplace a part of the document with a slice of new content.\n*/\nclass ReplaceStep extends Step {\n /**\n The given `slice` should fit the 'gap' between `from` and\n `to`—the depths must line up, and the surrounding nodes must be\n able to be joined with the open sides of the slice. When\n `structure` is true, the step will fail if the content between\n from and to is not just a sequence of closing and then opening\n tokens (this is to guard against rebased replace steps\n overwriting something they weren't supposed to).\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The slice to insert.\n */\n slice, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.slice = slice;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n return StepResult.fail(\"Structure replace would overwrite content\");\n return StepResult.fromReplace(doc, this.from, this.to, this.slice);\n }\n getMap() {\n return new StepMap([this.from, this.to - this.from, this.slice.size]);\n }\n invert(doc) {\n return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to));\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deletedAcross && to.deletedAcross)\n return null;\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice);\n }\n merge(other) {\n if (!(other instanceof ReplaceStep) || other.structure || this.structure)\n return null;\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure);\n }\n else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new ReplaceStep(other.from, this.to, slice, this.structure);\n }\n else {\n return null;\n }\n }\n toJSON() {\n let json = { stepType: \"replace\", from: this.from, to: this.to };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\");\n return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure);\n }\n}\nStep.jsonID(\"replace\", ReplaceStep);\n/**\nReplace a part of the document with a slice of content, but\npreserve a range of the replaced content by moving it into the\nslice.\n*/\nclass ReplaceAroundStep extends Step {\n /**\n Create a replace-around step with the given range and gap.\n `insert` should be the point in the slice into which the content\n of the gap should be moved. `structure` has the same meaning as\n it has in the [`ReplaceStep`](https://prosemirror.net/docs/ref/#transform.ReplaceStep) class.\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The start of preserved range.\n */\n gapFrom, \n /**\n The end of preserved range.\n */\n gapTo, \n /**\n The slice to insert.\n */\n slice, \n /**\n The position in the slice where the preserved range should be\n inserted.\n */\n insert, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.gapFrom = gapFrom;\n this.gapTo = gapTo;\n this.slice = slice;\n this.insert = insert;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n contentBetween(doc, this.gapTo, this.to)))\n return StepResult.fail(\"Structure gap-replace would overwrite content\");\n let gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n return StepResult.fail(\"Gap is not a flat range\");\n let inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted)\n return StepResult.fail(\"Content does not fit in gap\");\n return StepResult.fromReplace(doc, this.from, this.to, inserted);\n }\n getMap() {\n return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert]);\n }\n invert(doc) {\n let gap = this.gapTo - this.gapFrom;\n return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap, this.from + this.insert, this.from + this.insert + gap, doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from), this.gapFrom - this.from, this.structure);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n let gapFrom = mapping.map(this.gapFrom, -1), gapTo = mapping.map(this.gapTo, 1);\n if ((from.deletedAcross && to.deletedAcross) || gapFrom < from.pos || gapTo > to.pos)\n return null;\n return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure);\n }\n toJSON() {\n let json = { stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\");\n return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo, Slice.fromJSON(schema, json.slice), json.insert, !!json.structure);\n }\n}\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\nfunction contentBetween(doc, from, to) {\n let $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n let next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf)\n return true;\n next = next.firstChild;\n dist--;\n }\n }\n return false;\n}\n\nfunction addMark(tr, from, to, mark) {\n let removed = [], added = [];\n let removing, adding;\n tr.doc.nodesBetween(from, to, (node, pos, parent) => {\n if (!node.isInline)\n return;\n let marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n let start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n let newSet = mark.addToSet(marks);\n for (let i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n removing.to = end;\n else\n removed.push(removing = new RemoveMarkStep(start, end, marks[i]));\n }\n }\n if (adding && adding.to == start)\n adding.to = end;\n else\n added.push(adding = new AddMarkStep(start, end, mark));\n }\n });\n removed.forEach(s => tr.step(s));\n added.forEach(s => tr.step(s));\n}\nfunction removeMark(tr, from, to, mark) {\n let matched = [], step = 0;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isInline)\n return;\n step++;\n let toRemove = null;\n if (mark instanceof MarkType) {\n let set = node.marks, found;\n while (found = mark.isInSet(set)) {\n (toRemove || (toRemove = [])).push(found);\n set = found.removeFromSet(set);\n }\n }\n else if (mark) {\n if (mark.isInSet(node.marks))\n toRemove = [mark];\n }\n else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n let end = Math.min(pos + node.nodeSize, to);\n for (let i = 0; i < toRemove.length; i++) {\n let style = toRemove[i], found;\n for (let j = 0; j < matched.length; j++) {\n let m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style))\n found = m;\n }\n if (found) {\n found.to = end;\n found.step = step;\n }\n else {\n matched.push({ style, from: Math.max(pos, from), to: end, step });\n }\n }\n }\n });\n matched.forEach(m => tr.step(new RemoveMarkStep(m.from, m.to, m.style)));\n}\nfunction clearIncompatible(tr, pos, parentType, match = parentType.contentMatch) {\n let node = tr.doc.nodeAt(pos);\n let replSteps = [], cur = pos + 1;\n for (let i = 0; i < node.childCount; i++) {\n let child = node.child(i), end = cur + child.nodeSize;\n let allowed = match.matchType(child.type);\n if (!allowed) {\n replSteps.push(new ReplaceStep(cur, end, Slice.empty));\n }\n else {\n match = allowed;\n for (let j = 0; j < child.marks.length; j++)\n if (!parentType.allowsMarkType(child.marks[j].type))\n tr.step(new RemoveMarkStep(cur, end, child.marks[j]));\n if (child.isText && !parentType.spec.code) {\n let m, newline = /\\r?\\n|\\r/g, slice;\n while (m = newline.exec(child.text)) {\n if (!slice)\n slice = new Slice(Fragment.from(parentType.schema.text(\" \", parentType.allowedMarks(child.marks))), 0, 0);\n replSteps.push(new ReplaceStep(cur + m.index, cur + m.index + m[0].length, slice));\n }\n }\n }\n cur = end;\n }\n if (!match.validEnd) {\n let fill = match.fillBefore(Fragment.empty, true);\n tr.replace(cur, cur, new Slice(fill, 0, 0));\n }\n for (let i = replSteps.length - 1; i >= 0; i--)\n tr.step(replSteps[i]);\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end));\n}\n/**\nTry to find a target depth to which the content in the given range\ncan be lifted. Will not go across\n[isolating](https://prosemirror.net/docs/ref/#model.NodeSpec.isolating) parent nodes.\n*/\nfunction liftTarget(range) {\n let parent = range.parent;\n let content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (let depth = range.depth;; --depth) {\n let node = range.$from.node(depth);\n let index = range.$from.index(depth), endIndex = range.$to.indexAfter(depth);\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n return depth;\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex))\n break;\n }\n return null;\n}\nfunction lift(tr, range, target) {\n let { $from, $to, depth } = range;\n let gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n let start = gapStart, end = gapEnd;\n let before = Fragment.empty, openStart = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = Fragment.from($from.node(d).copy(before));\n openStart++;\n }\n else {\n start--;\n }\n let after = Fragment.empty, openEnd = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $to.after(d + 1) < $to.end(d)) {\n splitting = true;\n after = Fragment.from($to.node(d).copy(after));\n openEnd++;\n }\n else {\n end++;\n }\n tr.step(new ReplaceAroundStep(start, end, gapStart, gapEnd, new Slice(before.append(after), openStart, openEnd), before.size - openStart, true));\n}\n/**\nTry to find a valid way to wrap the content in the given range in a\nnode of the given type. May introduce extra nodes around and inside\nthe wrapper node, if necessary. Returns null if no valid wrapping\ncould be found. When `innerRange` is given, that range's content is\nused as the content to fit into the wrapping, instead of the\ncontent of `range`.\n*/\nfunction findWrapping(range, nodeType, attrs = null, innerRange = range) {\n let around = findWrappingOutside(range, nodeType);\n let inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner)\n return null;\n return around.map(withAttrs)\n .concat({ type: nodeType, attrs }).concat(inner.map(withAttrs));\n}\nfunction withAttrs(type) { return { type, attrs: null }; }\nfunction findWrappingOutside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around)\n return null;\n let outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null;\n}\nfunction findWrappingInside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let inner = parent.child(startIndex);\n let inside = type.contentMatch.findWrapping(inner.type);\n if (!inside)\n return null;\n let lastType = inside.length ? inside[inside.length - 1] : type;\n let innerMatch = lastType.contentMatch;\n for (let i = startIndex; innerMatch && i < endIndex; i++)\n innerMatch = innerMatch.matchType(parent.child(i).type);\n if (!innerMatch || !innerMatch.validEnd)\n return null;\n return inside;\n}\nfunction wrap(tr, range, wrappers) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--) {\n if (content.size) {\n let match = wrappers[i].type.contentMatch.matchFragment(content);\n if (!match || !match.validEnd)\n throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\");\n }\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n }\n let start = range.start, end = range.end;\n tr.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true));\n}\nfunction setBlockType(tr, from, to, type, attrs) {\n if (!type.isTextblock)\n throw new RangeError(\"Type given to setBlockType should be a textblock\");\n let mapFrom = tr.steps.length;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && !node.hasMarkup(type, attrs) && canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), type)) {\n // Ensure all markup that isn't allowed in the new node type is cleared\n tr.clearIncompatible(tr.mapping.slice(mapFrom).map(pos, 1), type);\n let mapping = tr.mapping.slice(mapFrom);\n let startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new Slice(Fragment.from(type.create(attrs, null, node.marks)), 0, 0), 1, true));\n return false;\n }\n });\n}\nfunction canChangeType(doc, pos, type) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n}\n/**\nChange the type, attributes, and/or marks of the node at `pos`.\nWhen `type` isn't given, the existing node type is preserved,\n*/\nfunction setNodeMarkup(tr, pos, type, attrs, marks) {\n let node = tr.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at given position\");\n if (!type)\n type = node.type;\n let newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n return tr.replaceWith(pos, pos + node.nodeSize, newNode);\n if (!type.validContent(node.content))\n throw new RangeError(\"Invalid content for node type \" + type.name);\n tr.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new Slice(Fragment.from(newNode), 0, 0), 1, true));\n}\n/**\nCheck whether splitting at the given position is allowed.\n*/\nfunction canSplit(doc, pos, depth = 1, typesAfter) {\n let $pos = doc.resolve(pos), base = $pos.depth - depth;\n let innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n return false;\n for (let d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n let node = $pos.node(d), index = $pos.index(d);\n if (node.type.spec.isolating)\n return false;\n let rest = node.content.cutByIndex(index, node.childCount);\n let overrideChild = typesAfter && typesAfter[i + 1];\n if (overrideChild)\n rest = rest.replaceChild(0, overrideChild.type.create(overrideChild.attrs));\n let after = (typesAfter && typesAfter[i]) || node;\n if (!node.canReplace(index + 1, node.childCount) || !after.type.validContent(rest))\n return false;\n }\n let index = $pos.indexAfter(base);\n let baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type);\n}\nfunction split(tr, pos, depth = 1, typesAfter) {\n let $pos = tr.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n for (let d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = Fragment.from($pos.node(d).copy(before));\n let typeAfter = typesAfter && typesAfter[i];\n after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n tr.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true));\n}\n/**\nTest whether the blocks before and after a given position can be\njoined.\n*/\nfunction canJoin(doc, pos) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1);\n}\nfunction joinable(a, b) {\n return !!(a && b && !a.isLeaf && a.canAppend(b));\n}\n/**\nFind an ancestor of the given position that can be joined to the\nblock before (or after if `dir` is positive). Returns the joinable\npoint, if any.\n*/\nfunction joinPoint(doc, pos, dir = -1) {\n let $pos = doc.resolve(pos);\n for (let d = $pos.depth;; d--) {\n let before, after, index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n }\n else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n }\n else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1))\n return pos;\n if (d == 0)\n break;\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\nfunction join(tr, pos, depth) {\n let step = new ReplaceStep(pos - depth, pos + depth, Slice.empty, true);\n tr.step(step);\n}\n/**\nTry to find a point where a node of the given type can be inserted\nnear `pos`, by searching up the node hierarchy when `pos` itself\nisn't a valid place but is at the start or end of a node. Return\nnull if no position was found.\n*/\nfunction insertPoint(doc, pos, nodeType) {\n let $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType))\n return pos;\n if ($pos.parentOffset == 0)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.before(d + 1);\n if (index > 0)\n return null;\n }\n if ($pos.parentOffset == $pos.parent.content.size)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.indexAfter(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.after(d + 1);\n if (index < $pos.node(d).childCount)\n return null;\n }\n return null;\n}\n/**\nFinds a position at or around the given position where the given\nslice can be inserted. Will look at parent nodes' nearest boundary\nand try there, even if the original position wasn't directly at the\nstart or end of that node. Returns null when no position was found.\n*/\nfunction dropPoint(doc, pos, slice) {\n let $pos = doc.resolve(pos);\n if (!slice.content.size)\n return pos;\n let content = slice.content;\n for (let i = 0; i < slice.openStart; i++)\n content = content.firstChild.content;\n for (let pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (let d = $pos.depth; d >= 0; d--) {\n let bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n let insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n let parent = $pos.node(d), fits = false;\n if (pass == 1) {\n fits = parent.canReplace(insertPos, insertPos, content);\n }\n else {\n let wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n }\n if (fits)\n return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1);\n }\n }\n return null;\n}\n\n/**\n‘Fit’ a slice into a given position in the document, producing a\n[step](https://prosemirror.net/docs/ref/#transform.Step) that inserts it. Will return null if\nthere's no meaningful way to insert the slice here, or inserting it\nwould be a no-op (an empty slice over an empty range).\n*/\nfunction replaceStep(doc, from, to = from, slice = Slice.empty) {\n if (from == to && !slice.size)\n return null;\n let $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice))\n return new ReplaceStep(from, to, slice);\n return new Fitter($from, $to, slice).fit();\n}\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content);\n}\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in , when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nclass Fitter {\n constructor($from, $to, unplaced) {\n this.$from = $from;\n this.$to = $to;\n this.unplaced = unplaced;\n this.frontier = [];\n this.placed = Fragment.empty;\n for (let i = 0; i <= $from.depth; i++) {\n let node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n for (let i = $from.depth; i > 0; i--)\n this.placed = Fragment.from($from.node(i).copy(this.placed));\n }\n get depth() { return this.frontier.length - 1; }\n fit() {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n let fit = this.findFittable();\n if (fit)\n this.placeNodes(fit);\n else\n this.openMore() || this.dropNode();\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n let moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n let $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to)\n return null;\n // If closing to `$to` succeeded, create a step\n let content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--;\n openEnd--;\n }\n let slice = new Slice(content, openStart, openEnd);\n if (moveInline > -1)\n return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize);\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n return new ReplaceStep($from.pos, $to.pos, slice);\n return null;\n }\n // Find a position on the start spine of `this.unplaced` that has\n // content that can be moved somewhere on the frontier. Returns two\n // depths, one for the slice and one for the frontier.\n findFittable() {\n let startDepth = this.unplaced.openStart;\n for (let cur = this.unplaced.content, d = 0, openEnd = this.unplaced.openEnd; d < startDepth; d++) {\n let node = cur.firstChild;\n if (cur.childCount > 1)\n openEnd = 0;\n if (node.type.spec.isolating && openEnd <= d) {\n startDepth = d;\n break;\n }\n cur = node.content;\n }\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (let pass = 1; pass <= 2; pass++) {\n for (let sliceDepth = pass == 1 ? startDepth : this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n let fragment, parent = null;\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n }\n else {\n fragment = this.unplaced.content;\n }\n let first = fragment.firstChild;\n for (let frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n let { type, match } = this.frontier[frontierDepth], wrap, inject = null;\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n : parent && type.compatibleContent(parent.type)))\n return { sliceDepth, frontierDepth, parent, inject };\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n return { sliceDepth, frontierDepth, parent, wrap };\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type))\n break;\n }\n }\n }\n }\n openMore() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf)\n return false;\n this.unplaced = new Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true;\n }\n dropNode() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n let openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1, openAtEnd ? openStart - 1 : openEnd);\n }\n else {\n this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n }\n // Move content from the unplaced slice at `sliceDepth` to the\n // frontier node at `frontierDepth`. Close that frontier node when\n // applicable.\n placeNodes({ sliceDepth, frontierDepth, parent, inject, wrap }) {\n while (this.depth > frontierDepth)\n this.closeFrontierNode();\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n this.openFrontierNode(wrap[i]);\n let slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n let openStart = slice.openStart - sliceDepth;\n let taken = 0, add = [];\n let { match, type } = this.frontier[frontierDepth];\n if (inject) {\n for (let i = 0; i < inject.childCount; i++)\n add.push(inject.child(i));\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n let openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n let next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches)\n break;\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0, taken == fragment.childCount ? openEndCount : -1));\n }\n }\n let toEnd = taken == fragment.childCount;\n if (!toEnd)\n openEndCount = -1;\n this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n this.closeFrontierNode();\n // Add new frontier nodes for any open nodes at the end.\n for (let i = 0, cur = fragment; i < openEndCount; i++) {\n let node = cur.lastChild;\n this.frontier.push({ type: node.type, match: node.contentMatchAt(node.childCount) });\n cur = node.content;\n }\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? Slice.empty\n : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1), sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n }\n mustMoveInline() {\n if (!this.$to.parent.isTextblock)\n return -1;\n let top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth))\n return -1;\n let { depth } = this.$to, after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth))\n ++after;\n return after;\n }\n findCloseLevel($to) {\n scan: for (let i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n let { match, type } = this.frontier[i];\n let dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n let fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit)\n continue;\n for (let d = i - 1; d >= 0; d--) {\n let { match, type } = this.frontier[d];\n let matches = contentAfterFits($to, d, type, match, true);\n if (!matches || matches.childCount)\n continue scan;\n }\n return { depth: i, fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to };\n }\n }\n close($to) {\n let close = this.findCloseLevel($to);\n if (!close)\n return null;\n while (this.depth > close.depth)\n this.closeFrontierNode();\n if (close.fit.childCount)\n this.placed = addToFragment(this.placed, close.depth, close.fit);\n $to = close.move;\n for (let d = close.depth + 1; d <= $to.depth; d++) {\n let node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to;\n }\n openFrontierNode(type, attrs = null, content) {\n let top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n this.frontier.push({ type, match: type.contentMatch });\n }\n closeFrontierNode() {\n let open = this.frontier.pop();\n let add = open.match.fillBefore(Fragment.empty, true);\n if (add.childCount)\n this.placed = addToFragment(this.placed, this.frontier.length, add);\n }\n}\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0)\n return fragment.cutByIndex(count, fragment.childCount);\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)));\n}\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0)\n return fragment.append(content);\n return fragment.replaceChild(fragment.childCount - 1, fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)));\n}\nfunction contentAt(fragment, depth) {\n for (let i = 0; i < depth; i++)\n fragment = fragment.firstChild.content;\n return fragment;\n}\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0)\n return node;\n let frag = node.content;\n if (openStart > 1)\n frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0));\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0)\n frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true));\n }\n return node.copy(frag);\n}\nfunction contentAfterFits($to, depth, type, match, open) {\n let node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type))\n return null;\n let fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null;\n}\nfunction invalidMarks(type, fragment, start) {\n for (let i = start; i < fragment.childCount; i++)\n if (!type.allowsMarks(fragment.child(i).marks))\n return true;\n return false;\n}\nfunction definesContent(type) {\n return type.spec.defining || type.spec.definingForContent;\n}\nfunction replaceRange(tr, from, to, slice) {\n if (!slice.size)\n return tr.deleteRange(from, to);\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n return tr.step(new ReplaceStep(from, to, slice));\n let targetDepths = coveredDepths($from, tr.doc.resolve(to));\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0)\n targetDepths.pop();\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n let preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (let d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n let spec = $from.node(d).type.spec;\n if (spec.defining || spec.definingAsContext || spec.isolating)\n break;\n if (targetDepths.indexOf(d) > -1)\n preferredTarget = d;\n else if ($from.before(d) == pos)\n targetDepths.splice(1, 0, -d);\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n let preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n let leftNodes = [], preferredDepth = slice.openStart;\n for (let content = slice.content, i = 0;; i++) {\n let node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart)\n break;\n content = node.content;\n }\n // Back up preferredDepth to cover defining textblocks directly\n // above it, possibly skipping a non-defining textblock.\n for (let d = preferredDepth - 1; d >= 0; d--) {\n let leftNode = leftNodes[d], def = definesContent(leftNode.type);\n if (def && !leftNode.sameMarkup($from.node(Math.abs(preferredTarget) - 1)))\n preferredDepth = d;\n else if (def || !leftNode.type.isTextblock)\n break;\n }\n for (let j = slice.openStart; j >= 0; j--) {\n let openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n let insert = leftNodes[openDepth];\n if (!insert)\n continue;\n for (let i = 0; i < targetDepths.length; i++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n let targetDepth = targetDepths[(i + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) {\n expand = false;\n targetDepth = -targetDepth;\n }\n let parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n return tr.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to, new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth), openDepth, slice.openEnd));\n }\n }\n let startSteps = tr.steps.length;\n for (let i = targetDepths.length - 1; i >= 0; i--) {\n tr.replace(from, to, slice);\n if (tr.steps.length > startSteps)\n break;\n let depth = targetDepths[i];\n if (depth < 0)\n continue;\n from = $from.before(depth);\n to = $to.after(depth);\n }\n}\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n let first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n let match = parent.contentMatchAt(0);\n let start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n }\n return fragment;\n}\nfunction replaceRangeWith(tr, from, to, node) {\n if (!node.isInline && from == to && tr.doc.resolve(from).parent.content.size) {\n let point = insertPoint(tr.doc, from, node.type);\n if (point != null)\n from = to = point;\n }\n tr.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0));\n}\nfunction deleteRange(tr, from, to) {\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n let covered = coveredDepths($from, $to);\n for (let i = 0; i < covered.length; i++) {\n let depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n return tr.delete($from.start(depth), $to.end(depth));\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n return tr.delete($from.before(depth), $to.after(depth));\n }\n for (let d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d)\n return tr.delete($from.before(d), to);\n }\n tr.delete(from, to);\n}\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n let result = [], minDepth = Math.min($from.depth, $to.depth);\n for (let d = minDepth; d >= 0; d--) {\n let start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating)\n break;\n if (start == $to.start(d) ||\n (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n d && $to.start(d - 1) == start - 1))\n result.push(d);\n }\n return result;\n}\n\n/**\nUpdate an attribute in a specific node.\n*/\nclass AttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.pos = pos;\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at attribute step's position\");\n let attrs = Object.create(null);\n for (let name in node.attrs)\n attrs[name] = node.attrs[name];\n attrs[this.attr] = this.value;\n let updated = node.type.create(attrs, null, node.marks);\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new AttrStep(this.pos, this.attr, doc.nodeAt(this.pos).attrs[this.attr]);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AttrStep(pos.pos, this.attr, this.value);\n }\n toJSON() {\n return { stepType: \"attr\", pos: this.pos, attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\" || typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for AttrStep.fromJSON\");\n return new AttrStep(json.pos, json.attr, json.value);\n }\n}\nStep.jsonID(\"attr\", AttrStep);\n/**\nUpdate an attribute in the doc node.\n*/\nclass DocAttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let attrs = Object.create(null);\n for (let name in doc.attrs)\n attrs[name] = doc.attrs[name];\n attrs[this.attr] = this.value;\n let updated = doc.type.create(attrs, doc.content, doc.marks);\n return StepResult.ok(updated);\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new DocAttrStep(this.attr, doc.attrs[this.attr]);\n }\n map(mapping) {\n return this;\n }\n toJSON() {\n return { stepType: \"docAttr\", attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for DocAttrStep.fromJSON\");\n return new DocAttrStep(json.attr, json.value);\n }\n}\nStep.jsonID(\"docAttr\", DocAttrStep);\n\n/**\n@internal\n*/\nlet TransformError = class extends Error {\n};\nTransformError = function TransformError(message) {\n let err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err;\n};\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n/**\nAbstraction to build up and track an array of\n[steps](https://prosemirror.net/docs/ref/#transform.Step) representing a document transformation.\n\nMost transforming methods return the `Transform` object itself, so\nthat they can be chained.\n*/\nclass Transform {\n /**\n Create a transform that starts with the given document.\n */\n constructor(\n /**\n The current document (the result of applying the steps in the\n transform).\n */\n doc) {\n this.doc = doc;\n /**\n The steps in this transform.\n */\n this.steps = [];\n /**\n The documents before each of the steps.\n */\n this.docs = [];\n /**\n A mapping with the maps for each of the steps in this transform.\n */\n this.mapping = new Mapping;\n }\n /**\n The starting document.\n */\n get before() { return this.docs.length ? this.docs[0] : this.doc; }\n /**\n Apply a new step in this transform, saving the result. Throws an\n error when the step fails.\n */\n step(step) {\n let result = this.maybeStep(step);\n if (result.failed)\n throw new TransformError(result.failed);\n return this;\n }\n /**\n Try to apply a step in this transformation, ignoring it if it\n fails. Returns the step result.\n */\n maybeStep(step) {\n let result = step.apply(this.doc);\n if (!result.failed)\n this.addStep(step, result.doc);\n return result;\n }\n /**\n True when the document has been changed (when there are any\n steps).\n */\n get docChanged() {\n return this.steps.length > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n }\n /**\n Replace the part of the document between `from` and `to` with the\n given `slice`.\n */\n replace(from, to = from, slice = Slice.empty) {\n let step = replaceStep(this.doc, from, to, slice);\n if (step)\n this.step(step);\n return this;\n }\n /**\n Replace the given range with the given content, which may be a\n fragment, node, or array of nodes.\n */\n replaceWith(from, to, content) {\n return this.replace(from, to, new Slice(Fragment.from(content), 0, 0));\n }\n /**\n Delete the content between the given positions.\n */\n delete(from, to) {\n return this.replace(from, to, Slice.empty);\n }\n /**\n Insert the given content at the given position.\n */\n insert(pos, content) {\n return this.replaceWith(pos, pos, content);\n }\n /**\n Replace a range of the document with a given slice, using\n `from`, `to`, and the slice's\n [`openStart`](https://prosemirror.net/docs/ref/#model.Slice.openStart) property as hints, rather\n than fixed start and end points. This method may grow the\n replaced area or close open nodes in the slice in order to get a\n fit that is more in line with WYSIWYG expectations, by dropping\n fully covered parent nodes of the replaced region when they are\n marked [non-defining as\n context](https://prosemirror.net/docs/ref/#model.NodeSpec.definingAsContext), or including an\n open parent node from the slice that _is_ marked as [defining\n its content](https://prosemirror.net/docs/ref/#model.NodeSpec.definingForContent).\n \n This is the method, for example, to handle paste. The similar\n [`replace`](https://prosemirror.net/docs/ref/#transform.Transform.replace) method is a more\n primitive tool which will _not_ move the start and end of its given\n range, and is useful in situations where you need more precise\n control over what happens.\n */\n replaceRange(from, to, slice) {\n replaceRange(this, from, to, slice);\n return this;\n }\n /**\n Replace the given range with a node, but use `from` and `to` as\n hints, rather than precise positions. When from and to are the same\n and are at the start or end of a parent node in which the given\n node doesn't fit, this method may _move_ them out towards a parent\n that does allow the given node to be placed. When the given range\n completely covers a parent node, this method may completely replace\n that parent node.\n */\n replaceRangeWith(from, to, node) {\n replaceRangeWith(this, from, to, node);\n return this;\n }\n /**\n Delete the given range, expanding it to cover fully covered\n parent nodes until a valid replace is found.\n */\n deleteRange(from, to) {\n deleteRange(this, from, to);\n return this;\n }\n /**\n Split the content in the given range off from its parent, if there\n is sibling content before or after it, and move it up the tree to\n the depth specified by `target`. You'll probably want to use\n [`liftTarget`](https://prosemirror.net/docs/ref/#transform.liftTarget) to compute `target`, to make\n sure the lift is valid.\n */\n lift(range, target) {\n lift(this, range, target);\n return this;\n }\n /**\n Join the blocks around the given position. If depth is 2, their\n last and first siblings are also joined, and so on.\n */\n join(pos, depth = 1) {\n join(this, pos, depth);\n return this;\n }\n /**\n Wrap the given [range](https://prosemirror.net/docs/ref/#model.NodeRange) in the given set of wrappers.\n The wrappers are assumed to be valid in this position, and should\n probably be computed with [`findWrapping`](https://prosemirror.net/docs/ref/#transform.findWrapping).\n */\n wrap(range, wrappers) {\n wrap(this, range, wrappers);\n return this;\n }\n /**\n Set the type of all textblocks (partly) between `from` and `to` to\n the given node type with the given attributes.\n */\n setBlockType(from, to = from, type, attrs = null) {\n setBlockType(this, from, to, type, attrs);\n return this;\n }\n /**\n Change the type, attributes, and/or marks of the node at `pos`.\n When `type` isn't given, the existing node type is preserved,\n */\n setNodeMarkup(pos, type, attrs = null, marks) {\n setNodeMarkup(this, pos, type, attrs, marks);\n return this;\n }\n /**\n Set a single attribute on a given node to a new value.\n The `pos` addresses the document content. Use `setDocAttribute`\n to set attributes on the document itself.\n */\n setNodeAttribute(pos, attr, value) {\n this.step(new AttrStep(pos, attr, value));\n return this;\n }\n /**\n Set a single attribute on the document to a new value.\n */\n setDocAttribute(attr, value) {\n this.step(new DocAttrStep(attr, value));\n return this;\n }\n /**\n Add a mark to the node at position `pos`.\n */\n addNodeMark(pos, mark) {\n this.step(new AddNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Remove a mark (or a mark of the given type) from the node at\n position `pos`.\n */\n removeNodeMark(pos, mark) {\n if (!(mark instanceof Mark)) {\n let node = this.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at position \" + pos);\n mark = mark.isInSet(node.marks);\n if (!mark)\n return this;\n }\n this.step(new RemoveNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Split the node at the given position, and optionally, if `depth` is\n greater than one, any number of nodes above that. By default, the\n parts split off will inherit the node type of the original node.\n This can be changed by passing an array of types and attributes to\n use after the split.\n */\n split(pos, depth = 1, typesAfter) {\n split(this, pos, depth, typesAfter);\n return this;\n }\n /**\n Add the given mark to the inline content between `from` and `to`.\n */\n addMark(from, to, mark) {\n addMark(this, from, to, mark);\n return this;\n }\n /**\n Remove marks from inline nodes between `from` and `to`. When\n `mark` is a single mark, remove precisely that mark. When it is\n a mark type, remove all marks of that type. When it is null,\n remove all marks of any type.\n */\n removeMark(from, to, mark) {\n removeMark(this, from, to, mark);\n return this;\n }\n /**\n Removes all marks and nodes from the content of the node at\n `pos` that don't match the given new parent node type. Accepts\n an optional starting [content match](https://prosemirror.net/docs/ref/#model.ContentMatch) as\n third argument.\n */\n clearIncompatible(pos, parentType, match) {\n clearIncompatible(this, pos, parentType, match);\n return this;\n }\n}\n\nexport { AddMarkStep, AddNodeMarkStep, AttrStep, DocAttrStep, MapResult, Mapping, RemoveMarkStep, RemoveNodeMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n","import { Slice, Fragment, Mark, Node } from 'prosemirror-model';\nimport { ReplaceStep, ReplaceAroundStep, Transform } from 'prosemirror-transform';\n\nconst classesById = Object.create(null);\n/**\nSuperclass for editor selections. Every selection type should\nextend this. Should not be instantiated directly.\n*/\nclass Selection {\n /**\n Initialize a selection with the head and anchor and ranges. If no\n ranges are given, constructs a single range across `$anchor` and\n `$head`.\n */\n constructor(\n /**\n The resolved anchor of the selection (the side that stays in\n place when the selection is modified).\n */\n $anchor, \n /**\n The resolved head of the selection (the side that moves when\n the selection is modified).\n */\n $head, ranges) {\n this.$anchor = $anchor;\n this.$head = $head;\n this.ranges = ranges || [new SelectionRange($anchor.min($head), $anchor.max($head))];\n }\n /**\n The selection's anchor, as an unresolved position.\n */\n get anchor() { return this.$anchor.pos; }\n /**\n The selection's head.\n */\n get head() { return this.$head.pos; }\n /**\n The lower bound of the selection's main range.\n */\n get from() { return this.$from.pos; }\n /**\n The upper bound of the selection's main range.\n */\n get to() { return this.$to.pos; }\n /**\n The resolved lower bound of the selection's main range.\n */\n get $from() {\n return this.ranges[0].$from;\n }\n /**\n The resolved upper bound of the selection's main range.\n */\n get $to() {\n return this.ranges[0].$to;\n }\n /**\n Indicates whether the selection contains any content.\n */\n get empty() {\n let ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++)\n if (ranges[i].$from.pos != ranges[i].$to.pos)\n return false;\n return true;\n }\n /**\n Get the content of this selection as a slice.\n */\n content() {\n return this.$from.doc.slice(this.from, this.to, true);\n }\n /**\n Replace the selection with a slice or, if no slice is given,\n delete the selection. Will append to the given transaction.\n */\n replace(tr, content = Slice.empty) {\n // Put the new selection at the position after the inserted\n // content. When that ended in an inline node, search backwards,\n // to get the position after that node. If not, search forward.\n let lastNode = content.content.lastChild, lastParent = null;\n for (let i = 0; i < content.openEnd; i++) {\n lastParent = lastNode;\n lastNode = lastNode.lastChild;\n }\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n tr.replaceRange(mapping.map($from.pos), mapping.map($to.pos), i ? Slice.empty : content);\n if (i == 0)\n selectionToInsertionEnd(tr, mapFrom, (lastNode ? lastNode.isInline : lastParent && lastParent.isTextblock) ? -1 : 1);\n }\n }\n /**\n Replace the selection with the given node, appending the changes\n to the given transaction.\n */\n replaceWith(tr, node) {\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n let from = mapping.map($from.pos), to = mapping.map($to.pos);\n if (i) {\n tr.deleteRange(from, to);\n }\n else {\n tr.replaceRangeWith(from, to, node);\n selectionToInsertionEnd(tr, mapFrom, node.isInline ? -1 : 1);\n }\n }\n }\n /**\n Find a valid cursor or leaf node selection starting at the given\n position and searching back if `dir` is negative, and forward if\n positive. When `textOnly` is true, only consider cursor\n selections. Will return null when no valid selection position is\n found.\n */\n static findFrom($pos, dir, textOnly = false) {\n let inner = $pos.parent.inlineContent ? new TextSelection($pos)\n : findSelectionIn($pos.node(0), $pos.parent, $pos.pos, $pos.index(), dir, textOnly);\n if (inner)\n return inner;\n for (let depth = $pos.depth - 1; depth >= 0; depth--) {\n let found = dir < 0\n ? findSelectionIn($pos.node(0), $pos.node(depth), $pos.before(depth + 1), $pos.index(depth), dir, textOnly)\n : findSelectionIn($pos.node(0), $pos.node(depth), $pos.after(depth + 1), $pos.index(depth) + 1, dir, textOnly);\n if (found)\n return found;\n }\n return null;\n }\n /**\n Find a valid cursor or leaf node selection near the given\n position. Searches forward first by default, but if `bias` is\n negative, it will search backwards first.\n */\n static near($pos, bias = 1) {\n return this.findFrom($pos, bias) || this.findFrom($pos, -bias) || new AllSelection($pos.node(0));\n }\n /**\n Find the cursor or leaf node selection closest to the start of\n the given document. Will return an\n [`AllSelection`](https://prosemirror.net/docs/ref/#state.AllSelection) if no valid position\n exists.\n */\n static atStart(doc) {\n return findSelectionIn(doc, doc, 0, 0, 1) || new AllSelection(doc);\n }\n /**\n Find the cursor or leaf node selection closest to the end of the\n given document.\n */\n static atEnd(doc) {\n return findSelectionIn(doc, doc, doc.content.size, doc.childCount, -1) || new AllSelection(doc);\n }\n /**\n Deserialize the JSON representation of a selection. Must be\n implemented for custom classes (as a static class method).\n */\n static fromJSON(doc, json) {\n if (!json || !json.type)\n throw new RangeError(\"Invalid input for Selection.fromJSON\");\n let cls = classesById[json.type];\n if (!cls)\n throw new RangeError(`No selection type ${json.type} defined`);\n return cls.fromJSON(doc, json);\n }\n /**\n To be able to deserialize selections from JSON, custom selection\n classes must register themselves with an ID string, so that they\n can be disambiguated. Try to pick something that's unlikely to\n clash with classes from other modules.\n */\n static jsonID(id, selectionClass) {\n if (id in classesById)\n throw new RangeError(\"Duplicate use of selection JSON ID \" + id);\n classesById[id] = selectionClass;\n selectionClass.prototype.jsonID = id;\n return selectionClass;\n }\n /**\n Get a [bookmark](https://prosemirror.net/docs/ref/#state.SelectionBookmark) for this selection,\n which is a value that can be mapped without having access to a\n current document, and later resolved to a real selection for a\n given document again. (This is used mostly by the history to\n track and restore old selections.) The default implementation of\n this method just converts the selection to a text selection and\n returns the bookmark for that.\n */\n getBookmark() {\n return TextSelection.between(this.$anchor, this.$head).getBookmark();\n }\n}\nSelection.prototype.visible = true;\n/**\nRepresents a selected range in a document.\n*/\nclass SelectionRange {\n /**\n Create a range.\n */\n constructor(\n /**\n The lower bound of the range.\n */\n $from, \n /**\n The upper bound of the range.\n */\n $to) {\n this.$from = $from;\n this.$to = $to;\n }\n}\nlet warnedAboutTextSelection = false;\nfunction checkTextSelection($pos) {\n if (!warnedAboutTextSelection && !$pos.parent.inlineContent) {\n warnedAboutTextSelection = true;\n console[\"warn\"](\"TextSelection endpoint not pointing into a node with inline content (\" + $pos.parent.type.name + \")\");\n }\n}\n/**\nA text selection represents a classical editor selection, with a\nhead (the moving side) and anchor (immobile side), both of which\npoint into textblock nodes. It can be empty (a regular cursor\nposition).\n*/\nclass TextSelection extends Selection {\n /**\n Construct a text selection between the given points.\n */\n constructor($anchor, $head = $anchor) {\n checkTextSelection($anchor);\n checkTextSelection($head);\n super($anchor, $head);\n }\n /**\n Returns a resolved position if this is a cursor selection (an\n empty text selection), and null otherwise.\n */\n get $cursor() { return this.$anchor.pos == this.$head.pos ? this.$head : null; }\n map(doc, mapping) {\n let $head = doc.resolve(mapping.map(this.head));\n if (!$head.parent.inlineContent)\n return Selection.near($head);\n let $anchor = doc.resolve(mapping.map(this.anchor));\n return new TextSelection($anchor.parent.inlineContent ? $anchor : $head, $head);\n }\n replace(tr, content = Slice.empty) {\n super.replace(tr, content);\n if (content == Slice.empty) {\n let marks = this.$from.marksAcross(this.$to);\n if (marks)\n tr.ensureMarks(marks);\n }\n }\n eq(other) {\n return other instanceof TextSelection && other.anchor == this.anchor && other.head == this.head;\n }\n getBookmark() {\n return new TextBookmark(this.anchor, this.head);\n }\n toJSON() {\n return { type: \"text\", anchor: this.anchor, head: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid input for TextSelection.fromJSON\");\n return new TextSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n /**\n Create a text selection from non-resolved positions.\n */\n static create(doc, anchor, head = anchor) {\n let $anchor = doc.resolve(anchor);\n return new this($anchor, head == anchor ? $anchor : doc.resolve(head));\n }\n /**\n Return a text selection that spans the given positions or, if\n they aren't text positions, find a text selection near them.\n `bias` determines whether the method searches forward (default)\n or backwards (negative number) first. Will fall back to calling\n [`Selection.near`](https://prosemirror.net/docs/ref/#state.Selection^near) when the document\n doesn't contain a valid text position.\n */\n static between($anchor, $head, bias) {\n let dPos = $anchor.pos - $head.pos;\n if (!bias || dPos)\n bias = dPos >= 0 ? 1 : -1;\n if (!$head.parent.inlineContent) {\n let found = Selection.findFrom($head, bias, true) || Selection.findFrom($head, -bias, true);\n if (found)\n $head = found.$head;\n else\n return Selection.near($head, bias);\n }\n if (!$anchor.parent.inlineContent) {\n if (dPos == 0) {\n $anchor = $head;\n }\n else {\n $anchor = (Selection.findFrom($anchor, -bias, true) || Selection.findFrom($anchor, bias, true)).$anchor;\n if (($anchor.pos < $head.pos) != (dPos < 0))\n $anchor = $head;\n }\n }\n return new TextSelection($anchor, $head);\n }\n}\nSelection.jsonID(\"text\", TextSelection);\nclass TextBookmark {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new TextBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n return TextSelection.between(doc.resolve(this.anchor), doc.resolve(this.head));\n }\n}\n/**\nA node selection is a selection that points at a single node. All\nnodes marked [selectable](https://prosemirror.net/docs/ref/#model.NodeSpec.selectable) can be the\ntarget of a node selection. In such a selection, `from` and `to`\npoint directly before and after the selected node, `anchor` equals\n`from`, and `head` equals `to`..\n*/\nclass NodeSelection extends Selection {\n /**\n Create a node selection. Does not verify the validity of its\n argument.\n */\n constructor($pos) {\n let node = $pos.nodeAfter;\n let $end = $pos.node(0).resolve($pos.pos + node.nodeSize);\n super($pos, $end);\n this.node = node;\n }\n map(doc, mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n let $pos = doc.resolve(pos);\n if (deleted)\n return Selection.near($pos);\n return new NodeSelection($pos);\n }\n content() {\n return new Slice(Fragment.from(this.node), 0, 0);\n }\n eq(other) {\n return other instanceof NodeSelection && other.anchor == this.anchor;\n }\n toJSON() {\n return { type: \"node\", anchor: this.anchor };\n }\n getBookmark() { return new NodeBookmark(this.anchor); }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\")\n throw new RangeError(\"Invalid input for NodeSelection.fromJSON\");\n return new NodeSelection(doc.resolve(json.anchor));\n }\n /**\n Create a node selection from non-resolved positions.\n */\n static create(doc, from) {\n return new NodeSelection(doc.resolve(from));\n }\n /**\n Determines whether the given node may be selected as a node\n selection.\n */\n static isSelectable(node) {\n return !node.isText && node.type.spec.selectable !== false;\n }\n}\nNodeSelection.prototype.visible = false;\nSelection.jsonID(\"node\", NodeSelection);\nclass NodeBookmark {\n constructor(anchor) {\n this.anchor = anchor;\n }\n map(mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n return deleted ? new TextBookmark(pos, pos) : new NodeBookmark(pos);\n }\n resolve(doc) {\n let $pos = doc.resolve(this.anchor), node = $pos.nodeAfter;\n if (node && NodeSelection.isSelectable(node))\n return new NodeSelection($pos);\n return Selection.near($pos);\n }\n}\n/**\nA selection type that represents selecting the whole document\n(which can not necessarily be expressed with a text selection, when\nthere are for example leaf block nodes at the start or end of the\ndocument).\n*/\nclass AllSelection extends Selection {\n /**\n Create an all-selection over the given document.\n */\n constructor(doc) {\n super(doc.resolve(0), doc.resolve(doc.content.size));\n }\n replace(tr, content = Slice.empty) {\n if (content == Slice.empty) {\n tr.delete(0, tr.doc.content.size);\n let sel = Selection.atStart(tr.doc);\n if (!sel.eq(tr.selection))\n tr.setSelection(sel);\n }\n else {\n super.replace(tr, content);\n }\n }\n toJSON() { return { type: \"all\" }; }\n /**\n @internal\n */\n static fromJSON(doc) { return new AllSelection(doc); }\n map(doc) { return new AllSelection(doc); }\n eq(other) { return other instanceof AllSelection; }\n getBookmark() { return AllBookmark; }\n}\nSelection.jsonID(\"all\", AllSelection);\nconst AllBookmark = {\n map() { return this; },\n resolve(doc) { return new AllSelection(doc); }\n};\n// FIXME we'll need some awareness of text direction when scanning for selections\n// Try to find a selection inside the given node. `pos` points at the\n// position where the search starts. When `text` is true, only return\n// text selections.\nfunction findSelectionIn(doc, node, pos, index, dir, text = false) {\n if (node.inlineContent)\n return TextSelection.create(doc, pos);\n for (let i = index - (dir > 0 ? 0 : 1); dir > 0 ? i < node.childCount : i >= 0; i += dir) {\n let child = node.child(i);\n if (!child.isAtom) {\n let inner = findSelectionIn(doc, child, pos + dir, dir < 0 ? child.childCount : 0, dir, text);\n if (inner)\n return inner;\n }\n else if (!text && NodeSelection.isSelectable(child)) {\n return NodeSelection.create(doc, pos - (dir < 0 ? child.nodeSize : 0));\n }\n pos += child.nodeSize * dir;\n }\n return null;\n}\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n let last = tr.steps.length - 1;\n if (last < startLen)\n return;\n let step = tr.steps[last];\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep))\n return;\n let map = tr.mapping.maps[last], end;\n map.forEach((_from, _to, _newFrom, newTo) => { if (end == null)\n end = newTo; });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nconst UPDATED_SEL = 1, UPDATED_MARKS = 2, UPDATED_SCROLL = 4;\n/**\nAn editor state transaction, which can be applied to a state to\ncreate an updated state. Use\n[`EditorState.tr`](https://prosemirror.net/docs/ref/#state.EditorState.tr) to create an instance.\n\nTransactions track changes to the document (they are a subclass of\n[`Transform`](https://prosemirror.net/docs/ref/#transform.Transform)), but also other state changes,\nlike selection updates and adjustments of the set of [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks). In addition, you can store\nmetadata properties in a transaction, which are extra pieces of\ninformation that client code or plugins can use to describe what a\ntransaction represents, so that they can update their [own\nstate](https://prosemirror.net/docs/ref/#state.StateField) accordingly.\n\nThe [editor view](https://prosemirror.net/docs/ref/#view.EditorView) uses a few metadata\nproperties: it will attach a property `\"pointer\"` with the value\n`true` to selection transactions directly caused by mouse or touch\ninput, a `\"composition\"` property holding an ID identifying the\ncomposition that caused it to transactions caused by composed DOM\ninput, and a `\"uiEvent\"` property of that may be `\"paste\"`,\n`\"cut\"`, or `\"drop\"`.\n*/\nclass Transaction extends Transform {\n /**\n @internal\n */\n constructor(state) {\n super(state.doc);\n // The step count for which the current selection is valid.\n this.curSelectionFor = 0;\n // Bitfield to track which aspects of the state were updated by\n // this transaction.\n this.updated = 0;\n // Object used to store metadata properties for the transaction.\n this.meta = Object.create(null);\n this.time = Date.now();\n this.curSelection = state.selection;\n this.storedMarks = state.storedMarks;\n }\n /**\n The transaction's current selection. This defaults to the editor\n selection [mapped](https://prosemirror.net/docs/ref/#state.Selection.map) through the steps in the\n transaction, but can be overwritten with\n [`setSelection`](https://prosemirror.net/docs/ref/#state.Transaction.setSelection).\n */\n get selection() {\n if (this.curSelectionFor < this.steps.length) {\n this.curSelection = this.curSelection.map(this.doc, this.mapping.slice(this.curSelectionFor));\n this.curSelectionFor = this.steps.length;\n }\n return this.curSelection;\n }\n /**\n Update the transaction's current selection. Will determine the\n selection that the editor gets when the transaction is applied.\n */\n setSelection(selection) {\n if (selection.$from.doc != this.doc)\n throw new RangeError(\"Selection passed to setSelection must point at the current document\");\n this.curSelection = selection;\n this.curSelectionFor = this.steps.length;\n this.updated = (this.updated | UPDATED_SEL) & ~UPDATED_MARKS;\n this.storedMarks = null;\n return this;\n }\n /**\n Whether the selection was explicitly updated by this transaction.\n */\n get selectionSet() {\n return (this.updated & UPDATED_SEL) > 0;\n }\n /**\n Set the current stored marks.\n */\n setStoredMarks(marks) {\n this.storedMarks = marks;\n this.updated |= UPDATED_MARKS;\n return this;\n }\n /**\n Make sure the current stored marks or, if that is null, the marks\n at the selection, match the given set of marks. Does nothing if\n this is already the case.\n */\n ensureMarks(marks) {\n if (!Mark.sameSet(this.storedMarks || this.selection.$from.marks(), marks))\n this.setStoredMarks(marks);\n return this;\n }\n /**\n Add a mark to the set of stored marks.\n */\n addStoredMark(mark) {\n return this.ensureMarks(mark.addToSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Remove a mark or mark type from the set of stored marks.\n */\n removeStoredMark(mark) {\n return this.ensureMarks(mark.removeFromSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Whether the stored marks were explicitly set for this transaction.\n */\n get storedMarksSet() {\n return (this.updated & UPDATED_MARKS) > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n super.addStep(step, doc);\n this.updated = this.updated & ~UPDATED_MARKS;\n this.storedMarks = null;\n }\n /**\n Update the timestamp for the transaction.\n */\n setTime(time) {\n this.time = time;\n return this;\n }\n /**\n Replace the current selection with the given slice.\n */\n replaceSelection(slice) {\n this.selection.replace(this, slice);\n return this;\n }\n /**\n Replace the selection with the given node. When `inheritMarks` is\n true and the content is inline, it inherits the marks from the\n place where it is inserted.\n */\n replaceSelectionWith(node, inheritMarks = true) {\n let selection = this.selection;\n if (inheritMarks)\n node = node.mark(this.storedMarks || (selection.empty ? selection.$from.marks() : (selection.$from.marksAcross(selection.$to) || Mark.none)));\n selection.replaceWith(this, node);\n return this;\n }\n /**\n Delete the selection.\n */\n deleteSelection() {\n this.selection.replace(this);\n return this;\n }\n /**\n Replace the given range, or the selection if no range is given,\n with a text node containing the given string.\n */\n insertText(text, from, to) {\n let schema = this.doc.type.schema;\n if (from == null) {\n if (!text)\n return this.deleteSelection();\n return this.replaceSelectionWith(schema.text(text), true);\n }\n else {\n if (to == null)\n to = from;\n to = to == null ? from : to;\n if (!text)\n return this.deleteRange(from, to);\n let marks = this.storedMarks;\n if (!marks) {\n let $from = this.doc.resolve(from);\n marks = to == from ? $from.marks() : $from.marksAcross(this.doc.resolve(to));\n }\n this.replaceRangeWith(from, to, schema.text(text, marks));\n if (!this.selection.empty)\n this.setSelection(Selection.near(this.selection.$to));\n return this;\n }\n }\n /**\n Store a metadata property in this transaction, keyed either by\n name or by plugin.\n */\n setMeta(key, value) {\n this.meta[typeof key == \"string\" ? key : key.key] = value;\n return this;\n }\n /**\n Retrieve a metadata property for a given name or plugin.\n */\n getMeta(key) {\n return this.meta[typeof key == \"string\" ? key : key.key];\n }\n /**\n Returns true if this transaction doesn't contain any metadata,\n and can thus safely be extended.\n */\n get isGeneric() {\n for (let _ in this.meta)\n return false;\n return true;\n }\n /**\n Indicate that the editor should scroll the selection into view\n when updated to the state produced by this transaction.\n */\n scrollIntoView() {\n this.updated |= UPDATED_SCROLL;\n return this;\n }\n /**\n True when this transaction has had `scrollIntoView` called on it.\n */\n get scrolledIntoView() {\n return (this.updated & UPDATED_SCROLL) > 0;\n }\n}\n\nfunction bind(f, self) {\n return !self || !f ? f : f.bind(self);\n}\nclass FieldDesc {\n constructor(name, desc, self) {\n this.name = name;\n this.init = bind(desc.init, self);\n this.apply = bind(desc.apply, self);\n }\n}\nconst baseFields = [\n new FieldDesc(\"doc\", {\n init(config) { return config.doc || config.schema.topNodeType.createAndFill(); },\n apply(tr) { return tr.doc; }\n }),\n new FieldDesc(\"selection\", {\n init(config, instance) { return config.selection || Selection.atStart(instance.doc); },\n apply(tr) { return tr.selection; }\n }),\n new FieldDesc(\"storedMarks\", {\n init(config) { return config.storedMarks || null; },\n apply(tr, _marks, _old, state) { return state.selection.$cursor ? tr.storedMarks : null; }\n }),\n new FieldDesc(\"scrollToSelection\", {\n init() { return 0; },\n apply(tr, prev) { return tr.scrolledIntoView ? prev + 1 : prev; }\n })\n];\n// Object wrapping the part of a state object that stays the same\n// across transactions. Stored in the state's `config` property.\nclass Configuration {\n constructor(schema, plugins) {\n this.schema = schema;\n this.plugins = [];\n this.pluginsByKey = Object.create(null);\n this.fields = baseFields.slice();\n if (plugins)\n plugins.forEach(plugin => {\n if (this.pluginsByKey[plugin.key])\n throw new RangeError(\"Adding different instances of a keyed plugin (\" + plugin.key + \")\");\n this.plugins.push(plugin);\n this.pluginsByKey[plugin.key] = plugin;\n if (plugin.spec.state)\n this.fields.push(new FieldDesc(plugin.key, plugin.spec.state, plugin));\n });\n }\n}\n/**\nThe state of a ProseMirror editor is represented by an object of\nthis type. A state is a persistent data structure—it isn't\nupdated, but rather a new state value is computed from an old one\nusing the [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) method.\n\nA state holds a number of built-in fields, and plugins can\n[define](https://prosemirror.net/docs/ref/#state.PluginSpec.state) additional fields.\n*/\nclass EditorState {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n config) {\n this.config = config;\n }\n /**\n The schema of the state's document.\n */\n get schema() {\n return this.config.schema;\n }\n /**\n The plugins that are active in this state.\n */\n get plugins() {\n return this.config.plugins;\n }\n /**\n Apply the given transaction to produce a new state.\n */\n apply(tr) {\n return this.applyTransaction(tr).state;\n }\n /**\n @internal\n */\n filterTransaction(tr, ignore = -1) {\n for (let i = 0; i < this.config.plugins.length; i++)\n if (i != ignore) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.filterTransaction && !plugin.spec.filterTransaction.call(plugin, tr, this))\n return false;\n }\n return true;\n }\n /**\n Verbose variant of [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) that\n returns the precise transactions that were applied (which might\n be influenced by the [transaction\n hooks](https://prosemirror.net/docs/ref/#state.PluginSpec.filterTransaction) of\n plugins) along with the new state.\n */\n applyTransaction(rootTr) {\n if (!this.filterTransaction(rootTr))\n return { state: this, transactions: [] };\n let trs = [rootTr], newState = this.applyInner(rootTr), seen = null;\n // This loop repeatedly gives plugins a chance to respond to\n // transactions as new transactions are added, making sure to only\n // pass the transactions the plugin did not see before.\n for (;;) {\n let haveNew = false;\n for (let i = 0; i < this.config.plugins.length; i++) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.appendTransaction) {\n let n = seen ? seen[i].n : 0, oldState = seen ? seen[i].state : this;\n let tr = n < trs.length &&\n plugin.spec.appendTransaction.call(plugin, n ? trs.slice(n) : trs, oldState, newState);\n if (tr && newState.filterTransaction(tr, i)) {\n tr.setMeta(\"appendedTransaction\", rootTr);\n if (!seen) {\n seen = [];\n for (let j = 0; j < this.config.plugins.length; j++)\n seen.push(j < i ? { state: newState, n: trs.length } : { state: this, n: 0 });\n }\n trs.push(tr);\n newState = newState.applyInner(tr);\n haveNew = true;\n }\n if (seen)\n seen[i] = { state: newState, n: trs.length };\n }\n }\n if (!haveNew)\n return { state: newState, transactions: trs };\n }\n }\n /**\n @internal\n */\n applyInner(tr) {\n if (!tr.before.eq(this.doc))\n throw new RangeError(\"Applying a mismatched transaction\");\n let newInstance = new EditorState(this.config), fields = this.config.fields;\n for (let i = 0; i < fields.length; i++) {\n let field = fields[i];\n newInstance[field.name] = field.apply(tr, this[field.name], this, newInstance);\n }\n return newInstance;\n }\n /**\n Start a [transaction](https://prosemirror.net/docs/ref/#state.Transaction) from this state.\n */\n get tr() { return new Transaction(this); }\n /**\n Create a new state.\n */\n static create(config) {\n let $config = new Configuration(config.doc ? config.doc.type.schema : config.schema, config.plugins);\n let instance = new EditorState($config);\n for (let i = 0; i < $config.fields.length; i++)\n instance[$config.fields[i].name] = $config.fields[i].init(config, instance);\n return instance;\n }\n /**\n Create a new state based on this one, but with an adjusted set\n of active plugins. State fields that exist in both sets of\n plugins are kept unchanged. Those that no longer exist are\n dropped, and those that are new are initialized using their\n [`init`](https://prosemirror.net/docs/ref/#state.StateField.init) method, passing in the new\n configuration object..\n */\n reconfigure(config) {\n let $config = new Configuration(this.schema, config.plugins);\n let fields = $config.fields, instance = new EditorState($config);\n for (let i = 0; i < fields.length; i++) {\n let name = fields[i].name;\n instance[name] = this.hasOwnProperty(name) ? this[name] : fields[i].init(config, instance);\n }\n return instance;\n }\n /**\n Serialize this state to JSON. If you want to serialize the state\n of plugins, pass an object mapping property names to use in the\n resulting JSON object to plugin objects. The argument may also be\n a string or number, in which case it is ignored, to support the\n way `JSON.stringify` calls `toString` methods.\n */\n toJSON(pluginFields) {\n let result = { doc: this.doc.toJSON(), selection: this.selection.toJSON() };\n if (this.storedMarks)\n result.storedMarks = this.storedMarks.map(m => m.toJSON());\n if (pluginFields && typeof pluginFields == 'object')\n for (let prop in pluginFields) {\n if (prop == \"doc\" || prop == \"selection\")\n throw new RangeError(\"The JSON fields `doc` and `selection` are reserved\");\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (state && state.toJSON)\n result[prop] = state.toJSON.call(plugin, this[plugin.key]);\n }\n return result;\n }\n /**\n Deserialize a JSON representation of a state. `config` should\n have at least a `schema` field, and should contain array of\n plugins to initialize the state with. `pluginFields` can be used\n to deserialize the state of plugins, by associating plugin\n instances with the property names they use in the JSON object.\n */\n static fromJSON(config, json, pluginFields) {\n if (!json)\n throw new RangeError(\"Invalid input for EditorState.fromJSON\");\n if (!config.schema)\n throw new RangeError(\"Required config field 'schema' missing\");\n let $config = new Configuration(config.schema, config.plugins);\n let instance = new EditorState($config);\n $config.fields.forEach(field => {\n if (field.name == \"doc\") {\n instance.doc = Node.fromJSON(config.schema, json.doc);\n }\n else if (field.name == \"selection\") {\n instance.selection = Selection.fromJSON(instance.doc, json.selection);\n }\n else if (field.name == \"storedMarks\") {\n if (json.storedMarks)\n instance.storedMarks = json.storedMarks.map(config.schema.markFromJSON);\n }\n else {\n if (pluginFields)\n for (let prop in pluginFields) {\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (plugin.key == field.name && state && state.fromJSON &&\n Object.prototype.hasOwnProperty.call(json, prop)) {\n instance[field.name] = state.fromJSON.call(plugin, config, json[prop], instance);\n return;\n }\n }\n instance[field.name] = field.init(config, instance);\n }\n });\n return instance;\n }\n}\n\nfunction bindProps(obj, self, target) {\n for (let prop in obj) {\n let val = obj[prop];\n if (val instanceof Function)\n val = val.bind(self);\n else if (prop == \"handleDOMEvents\")\n val = bindProps(val, self, {});\n target[prop] = val;\n }\n return target;\n}\n/**\nPlugins bundle functionality that can be added to an editor.\nThey are part of the [editor state](https://prosemirror.net/docs/ref/#state.EditorState) and\nmay influence that state and the view that contains it.\n*/\nclass Plugin {\n /**\n Create a plugin.\n */\n constructor(\n /**\n The plugin's [spec object](https://prosemirror.net/docs/ref/#state.PluginSpec).\n */\n spec) {\n this.spec = spec;\n /**\n The [props](https://prosemirror.net/docs/ref/#view.EditorProps) exported by this plugin.\n */\n this.props = {};\n if (spec.props)\n bindProps(spec.props, this, this.props);\n this.key = spec.key ? spec.key.key : createKey(\"plugin\");\n }\n /**\n Extract the plugin's state field from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\nconst keys = Object.create(null);\nfunction createKey(name) {\n if (name in keys)\n return name + \"$\" + ++keys[name];\n keys[name] = 0;\n return name + \"$\";\n}\n/**\nA key is used to [tag](https://prosemirror.net/docs/ref/#state.PluginSpec.key) plugins in a way\nthat makes it possible to find them, given an editor state.\nAssigning a key does mean only one plugin of that type can be\nactive in a state.\n*/\nclass PluginKey {\n /**\n Create a plugin key.\n */\n constructor(name = \"key\") { this.key = createKey(name); }\n /**\n Get the active plugin with this key, if any, from an editor\n state.\n */\n get(state) { return state.config.pluginsByKey[this.key]; }\n /**\n Get the plugin's state from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\n\nexport { AllSelection, EditorState, NodeSelection, Plugin, PluginKey, Selection, SelectionRange, TextSelection, Transaction };\n","import { TextSelection, NodeSelection, AllSelection, Selection } from 'prosemirror-state';\nimport { DOMSerializer, Fragment, Mark, Slice, DOMParser } from 'prosemirror-model';\nimport { dropPoint } from 'prosemirror-transform';\n\nconst domIndex = function (node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node)\n return index;\n }\n};\nconst parentNode = function (node) {\n let parent = node.assignedSlot || node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent;\n};\nlet reusedRange = null;\n// Note that this will always return the same range, because DOM range\n// objects are every expensive, and keep slowing down subsequent DOM\n// updates, for some reason.\nconst textRange = function (node, from, to) {\n let range = reusedRange || (reusedRange = document.createRange());\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range;\n};\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nconst isEquivalentPosition = function (node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1));\n};\nconst atomElements = /^(img|br|input|textarea|hr)$/i;\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n for (;;) {\n if (node == targetNode && off == targetOff)\n return true;\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n let parent = node.parentNode;\n if (!parent || parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) ||\n node.contentEditable == \"false\")\n return false;\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n }\n else if (node.nodeType == 1) {\n node = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (node.contentEditable == \"false\")\n return false;\n off = dir < 0 ? nodeSize(node) : 0;\n }\n else {\n return false;\n }\n }\n}\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction isOnEdge(node, offset, parent) {\n for (let atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent)\n return true;\n let index = domIndex(node);\n node = node.parentNode;\n if (!node)\n return false;\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\nfunction hasBlockDesc(dom) {\n let desc;\n for (let cur = dom; cur; cur = cur.parentNode)\n if (desc = cur.pmViewDesc)\n break;\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom);\n}\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nconst selectionCollapsed = function (domSel) {\n return domSel.focusNode && isEquivalentPosition(domSel.focusNode, domSel.focusOffset, domSel.anchorNode, domSel.anchorOffset);\n};\nfunction keyEvent(keyCode, key) {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event;\n}\nfunction deepActiveElement(doc) {\n let elt = doc.activeElement;\n while (elt && elt.shadowRoot)\n elt = elt.shadowRoot.activeElement;\n return elt;\n}\nfunction caretFromPoint(doc, x, y) {\n if (doc.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n let pos = doc.caretPositionFromPoint(x, y);\n if (pos)\n return { node: pos.offsetNode, offset: pos.offset };\n }\n catch (_) { }\n }\n if (doc.caretRangeFromPoint) {\n let range = doc.caretRangeFromPoint(x, y);\n if (range)\n return { node: range.startContainer, offset: range.startOffset };\n }\n}\n\nconst nav = typeof navigator != \"undefined\" ? navigator : null;\nconst doc = typeof document != \"undefined\" ? document : null;\nconst agent = (nav && nav.userAgent) || \"\";\nconst ie_edge = /Edge\\/(\\d+)/.exec(agent);\nconst ie_upto10 = /MSIE \\d/.exec(agent);\nconst ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(agent);\nconst ie = !!(ie_upto10 || ie_11up || ie_edge);\nconst ie_version = ie_upto10 ? document.documentMode : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0;\nconst gecko = !ie && /gecko\\/(\\d+)/i.test(agent);\ngecko && +(/Firefox\\/(\\d+)/.exec(agent) || [0, 0])[1];\nconst _chrome = !ie && /Chrome\\/(\\d+)/.exec(agent);\nconst chrome = !!_chrome;\nconst chrome_version = _chrome ? +_chrome[1] : 0;\nconst safari = !ie && !!nav && /Apple Computer/.test(nav.vendor);\n// Is true for both iOS and iPadOS for convenience\nconst ios = safari && (/Mobile\\/\\w+/.test(agent) || !!nav && nav.maxTouchPoints > 2);\nconst mac = ios || (nav ? /Mac/.test(nav.platform) : false);\nconst windows = nav ? /Win/.test(nav.platform) : false;\nconst android = /Android \\d/.test(agent);\nconst webkit = !!doc && \"webkitFontSmoothing\" in doc.documentElement.style;\nconst webkit_version = webkit ? +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1] : 0;\n\nfunction windowRect(doc) {\n return { left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight };\n}\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side];\n}\nfunction clientRect(node) {\n let rect = node.getBoundingClientRect();\n // Adjust for elements with style \"transform: scale()\"\n let scaleX = (rect.width / node.offsetWidth) || 1;\n let scaleY = (rect.height / node.offsetHeight) || 1;\n // Make sure scrollbar width isn't included in the rectangle\n return { left: rect.left, right: rect.left + node.clientWidth * scaleX,\n top: rect.top, bottom: rect.top + node.clientHeight * scaleY };\n}\nfunction scrollRectIntoView(view, rect, startDOM) {\n let scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n let doc = view.dom.ownerDocument;\n for (let parent = startDOM || view.dom;; parent = parentNode(parent)) {\n if (!parent)\n break;\n if (parent.nodeType != 1)\n continue;\n let elt = parent;\n let atTop = elt == doc.body;\n let bounding = atTop ? windowRect(doc) : clientRect(elt);\n let moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\"));\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n moveY = rect.bottom - rect.top > bounding.bottom - bounding.top\n ? rect.top + getSide(scrollMargin, \"top\") - bounding.top\n : rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\");\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\"));\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\");\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n }\n else {\n let startX = elt.scrollLeft, startY = elt.scrollTop;\n if (moveY)\n elt.scrollTop += moveY;\n if (moveX)\n elt.scrollLeft += moveX;\n let dX = elt.scrollLeft - startX, dY = elt.scrollTop - startY;\n rect = { left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY };\n }\n }\n if (atTop || /^(fixed|sticky)$/.test(getComputedStyle(parent).position))\n break;\n }\n}\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n let rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n let refDOM, refTop;\n for (let x = (rect.left + rect.right) / 2, y = startY + 1; y < Math.min(innerHeight, rect.bottom); y += 5) {\n let dom = view.root.elementFromPoint(x, y);\n if (!dom || dom == view.dom || !view.dom.contains(dom))\n continue;\n let localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break;\n }\n }\n return { refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom) };\n}\nfunction scrollStack(dom) {\n let stack = [], doc = dom.ownerDocument;\n for (let cur = dom; cur; cur = parentNode(cur)) {\n stack.push({ dom: cur, top: cur.scrollTop, left: cur.scrollLeft });\n if (dom == doc)\n break;\n }\n return stack;\n}\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos({ refDOM, refTop, stack }) {\n let newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\nfunction restoreScrollStack(stack, dTop) {\n for (let i = 0; i < stack.length; i++) {\n let { dom, top, left } = stack[i];\n if (dom.scrollTop != top + dTop)\n dom.scrollTop = top + dTop;\n if (dom.scrollLeft != left)\n dom.scrollLeft = left;\n }\n}\nlet preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive)\n return dom.setActive(); // in IE\n if (preventScrollSupported)\n return dom.focus(preventScrollSupported);\n let stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = { preventScroll: true };\n return true;\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\nfunction findOffsetInNode(node, coords) {\n let closest, dxClosest = 2e8, coordsClosest, offset = 0;\n let rowBot = coords.top, rowTop = coords.top;\n let firstBelow, coordsBelow;\n for (let child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n let rects;\n if (child.nodeType == 1)\n rects = child.getClientRects();\n else if (child.nodeType == 3)\n rects = textRange(child).getClientRects();\n else\n continue;\n for (let i = 0; i < rects.length; i++) {\n let rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n let dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {\n left: rect.right < coords.left ? rect.right : rect.left,\n top: coords.top\n } : coords;\n if (child.nodeType == 1 && dx)\n offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0);\n continue;\n }\n }\n else if (rect.top > coords.top && !firstBelow && rect.left <= coords.left && rect.right >= coords.left) {\n firstBelow = child;\n coordsBelow = { left: Math.max(rect.left, Math.min(rect.right, coords.left)), top: rect.top };\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n offset = childIndex + 1;\n }\n }\n if (!closest && firstBelow) {\n closest = firstBelow;\n coordsClosest = coordsBelow;\n dxClosest = 0;\n }\n if (closest && closest.nodeType == 3)\n return findOffsetInText(closest, coordsClosest);\n if (!closest || (dxClosest && closest.nodeType == 1))\n return { node, offset };\n return findOffsetInNode(closest, coordsClosest);\n}\nfunction findOffsetInText(node, coords) {\n let len = node.nodeValue.length;\n let range = document.createRange();\n for (let i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n let rect = singleRect(range, 1);\n if (rect.top == rect.bottom)\n continue;\n if (inRect(coords, rect))\n return { node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0) };\n }\n return { node, offset: 0 };\n}\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1 &&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1;\n}\nfunction targetKludge(dom, coords) {\n let parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n return parent;\n return dom;\n}\nfunction posFromElement(view, elt, coords) {\n let { node, offset } = findOffsetInNode(elt, coords), bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n let rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias);\n}\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n let outsideBlock = -1;\n for (let cur = node, sawBlock = false;;) {\n if (cur == view.dom)\n break;\n let desc = view.docView.nearestDesc(cur, true);\n if (!desc)\n return null;\n if (desc.dom.nodeType == 1 && (desc.node.isBlock && desc.parent && !sawBlock || !desc.contentDOM)) {\n let rect = desc.dom.getBoundingClientRect();\n if (desc.node.isBlock && desc.parent && !sawBlock) {\n sawBlock = true;\n if (rect.left > coords.left || rect.top > coords.top)\n outsideBlock = desc.posBefore;\n else if (rect.right < coords.left || rect.bottom < coords.top)\n outsideBlock = desc.posAfter;\n }\n if (!desc.contentDOM && outsideBlock < 0 && !desc.node.isText) {\n // If we are inside a leaf, return the side of the leaf closer to the coords\n let before = desc.node.isBlock ? coords.top < (rect.top + rect.bottom) / 2\n : coords.left < (rect.left + rect.right) / 2;\n return before ? desc.posBefore : desc.posAfter;\n }\n }\n cur = desc.dom.parentNode;\n }\n return outsideBlock > -1 ? outsideBlock : view.docView.posFromDOM(node, offset, -1);\n}\nfunction elementFromPoint(element, coords, box) {\n let len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (let startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n let child = element.childNodes[i];\n if (child.nodeType == 1) {\n let rects = child.getClientRects();\n for (let j = 0; j < rects.length; j++) {\n let rect = rects[j];\n if (inRect(coords, rect))\n return elementFromPoint(child, coords, rect);\n }\n }\n if ((i = (i + 1) % len) == startI)\n break;\n }\n }\n return element;\n}\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n let doc = view.dom.ownerDocument, node, offset = 0;\n let caret = caretFromPoint(doc, coords.left, coords.top);\n if (caret)\n ({ node, offset } = caret);\n let elt = (view.root.elementFromPoint ? view.root : doc)\n .elementFromPoint(coords.left, coords.top);\n let pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n let box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box))\n return null;\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt)\n return null;\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (safari) {\n for (let p = elt; node && p; p = parentNode(p))\n if (p.draggable)\n node = undefined;\n }\n elt = targetKludge(elt, coords);\n if (node) {\n if (gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into nodes, which\n // have no actual children, from caretPositionFromPoint (#953)\n offset = Math.min(offset, node.childNodes.length);\n // It'll also move the returned position before image nodes,\n // even if those are behind it.\n if (offset < node.childNodes.length) {\n let next = node.childNodes[offset], box;\n if (next.nodeName == \"IMG\" && (box = next.getBoundingClientRect()).right <= coords.left &&\n box.bottom > coords.top)\n offset++;\n }\n }\n let prev;\n // When clicking above the right side of an uneditable node, Chrome will report a cursor position after that node.\n if (webkit && offset && node.nodeType == 1 && (prev = node.childNodes[offset - 1]).nodeType == 1 &&\n prev.contentEditable == \"false\" && prev.getBoundingClientRect().top >= coords.top)\n offset--;\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n pos = view.state.doc.content.size;\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n pos = posFromCaret(view, node, offset, coords);\n }\n if (pos == null)\n pos = posFromElement(view, elt, coords);\n let desc = view.docView.nearestDesc(elt, true);\n return { pos, inside: desc ? desc.posAtStart - desc.border : -1 };\n}\nfunction nonZero(rect) {\n return rect.top < rect.bottom || rect.left < rect.right;\n}\nfunction singleRect(target, bias) {\n let rects = target.getClientRects();\n if (rects.length) {\n let first = rects[bias < 0 ? 0 : rects.length - 1];\n if (nonZero(first))\n return first;\n }\n return Array.prototype.find.call(rects, nonZero) || target.getBoundingClientRect();\n}\nconst BIDI = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos, side) {\n let { node, offset, atom } = view.docView.domFromPos(pos, side < 0 ? -1 : 1);\n let supportEmptyRange = webkit || gecko;\n if (node.nodeType == 3) {\n // These browsers support querying empty text ranges. Prefer that in\n // bidi context or when at the end of a node.\n if (supportEmptyRange && (BIDI.test(node.nodeValue) || (side < 0 ? !offset : offset == node.nodeValue.length))) {\n let rect = singleRect(textRange(node, offset, offset), side);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n let rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n let rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n return flattenV(rectAfter, rectAfter.left < rectBefore.left);\n }\n }\n return rect;\n }\n else {\n let from = offset, to = offset, takeSide = side < 0 ? 1 : -1;\n if (side < 0 && !offset) {\n to++;\n takeSide = -1;\n }\n else if (side >= 0 && offset == node.nodeValue.length) {\n from--;\n takeSide = 1;\n }\n else if (side < 0) {\n from--;\n }\n else {\n to++;\n }\n return flattenV(singleRect(textRange(node, from, to), takeSide), takeSide < 0);\n }\n }\n let $dom = view.state.doc.resolve(pos - (atom || 0));\n // Return a horizontal line in block context\n if (!$dom.parent.inlineContent) {\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n if (before.nodeType == 1)\n return flattenH(before.getBoundingClientRect(), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n if (after.nodeType == 1)\n return flattenH(after.getBoundingClientRect(), true);\n }\n return flattenH(node.getBoundingClientRect(), side >= 0);\n }\n // Inline, not in text node (this is not Bidi-safe)\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n let target = before.nodeType == 3 ? textRange(before, nodeSize(before) - (supportEmptyRange ? 0 : 1))\n // BR nodes tend to only return the rectangle before them.\n // Only use them if they are the last element in their parent\n : before.nodeType == 1 && (before.nodeName != \"BR\" || !before.nextSibling) ? before : null;\n if (target)\n return flattenV(singleRect(target, 1), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n while (after.pmViewDesc && after.pmViewDesc.ignoreForCoords)\n after = after.nextSibling;\n let target = !after ? null : after.nodeType == 3 ? textRange(after, 0, (supportEmptyRange ? 0 : 1))\n : after.nodeType == 1 ? after : null;\n if (target)\n return flattenV(singleRect(target, -1), true);\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, -side), side >= 0);\n}\nfunction flattenV(rect, left) {\n if (rect.width == 0)\n return rect;\n let x = left ? rect.left : rect.right;\n return { top: rect.top, bottom: rect.bottom, left: x, right: x };\n}\nfunction flattenH(rect, top) {\n if (rect.height == 0)\n return rect;\n let y = top ? rect.top : rect.bottom;\n return { top: y, bottom: y, left: rect.left, right: rect.right };\n}\nfunction withFlushedState(view, state, f) {\n let viewState = view.state, active = view.root.activeElement;\n if (viewState != state)\n view.updateState(state);\n if (active != view.dom)\n view.focus();\n try {\n return f();\n }\n finally {\n if (viewState != state)\n view.updateState(viewState);\n if (active != view.dom && active)\n active.focus();\n }\n}\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n let sel = state.selection;\n let $pos = dir == \"up\" ? sel.$from : sel.$to;\n return withFlushedState(view, state, () => {\n let { node: dom } = view.docView.domFromPos($pos.pos, dir == \"up\" ? -1 : 1);\n for (;;) {\n let nearest = view.docView.nearestDesc(dom, true);\n if (!nearest)\n break;\n if (nearest.node.isBlock) {\n dom = nearest.contentDOM || nearest.dom;\n break;\n }\n dom = nearest.dom.parentNode;\n }\n let coords = coordsAtPos(view, $pos.pos, 1);\n for (let child = dom.firstChild; child; child = child.nextSibling) {\n let boxes;\n if (child.nodeType == 1)\n boxes = child.getClientRects();\n else if (child.nodeType == 3)\n boxes = textRange(child, 0, child.nodeValue.length).getClientRects();\n else\n continue;\n for (let i = 0; i < boxes.length; i++) {\n let box = boxes[i];\n if (box.bottom > box.top + 1 &&\n (dir == \"up\" ? coords.top - box.top > (box.bottom - coords.top) * 2\n : box.bottom - coords.bottom > (coords.bottom - box.top) * 2))\n return false;\n }\n }\n return true;\n });\n}\nconst maybeRTL = /[\\u0590-\\u08ac]/;\nfunction endOfTextblockHorizontal(view, state, dir) {\n let { $head } = state.selection;\n if (!$head.parent.isTextblock)\n return false;\n let offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n let sel = view.domSelection();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n return dir == \"left\" || dir == \"backward\" ? atStart : atEnd;\n return withFlushedState(view, state, () => {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n let { focusNode: oldNode, focusOffset: oldOff, anchorNode, anchorOffset } = view.domSelectionRange();\n let oldBidiLevel = sel.caretBidiLevel // Only for Firefox\n ;\n sel.modify(\"move\", dir, \"character\");\n let parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n let { focusNode: newNode, focusOffset: newOff } = view.domSelectionRange();\n let result = newNode && !parentDOM.contains(newNode.nodeType == 1 ? newNode : newNode.parentNode) ||\n (oldNode == newNode && oldOff == newOff);\n // Restore the previous selection\n try {\n sel.collapse(anchorNode, anchorOffset);\n if (oldNode && (oldNode != anchorNode || oldOff != anchorOffset) && sel.extend)\n sel.extend(oldNode, oldOff);\n }\n catch (_) { }\n if (oldBidiLevel != null)\n sel.caretBidiLevel = oldBidiLevel;\n return result;\n });\n}\nlet cachedState = null;\nlet cachedDir = null;\nlet cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir)\n return cachedResult;\n cachedState = state;\n cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir);\n}\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\nconst NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nclass ViewDesc {\n constructor(parent, children, dom, \n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n }\n // Used to check whether a given description corresponds to a\n // widget/mark/node.\n matchesWidget(widget) { return false; }\n matchesMark(mark) { return false; }\n matchesNode(node, outerDeco, innerDeco) { return false; }\n matchesHack(nodeName) { return false; }\n // When parsing in-editor content (in domchange.js), we allow\n // descriptions to determine the parse rules that should be used to\n // parse them.\n parseRule() { return null; }\n // Used by the editor's event handler to ignore events that come\n // from certain descs.\n stopEvent(event) { return false; }\n // The size of the content represented by this desc.\n get size() {\n let size = 0;\n for (let i = 0; i < this.children.length; i++)\n size += this.children[i].size;\n return size;\n }\n // For block nodes, this represents the space taken up by their\n // start/end tokens.\n get border() { return 0; }\n destroy() {\n this.parent = undefined;\n if (this.dom.pmViewDesc == this)\n this.dom.pmViewDesc = undefined;\n for (let i = 0; i < this.children.length; i++)\n this.children[i].destroy();\n }\n posBeforeChild(child) {\n for (let i = 0, pos = this.posAtStart;; i++) {\n let cur = this.children[i];\n if (cur == child)\n return pos;\n pos += cur.size;\n }\n }\n get posBefore() {\n return this.parent.posBeforeChild(this);\n }\n get posAtStart() {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0;\n }\n get posAfter() {\n return this.posBefore + this.size;\n }\n get posAtEnd() {\n return this.posAtStart + this.size - 2 * this.border;\n }\n localPosFromDOM(dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n let domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this))\n domBefore = domBefore.previousSibling;\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart;\n }\n else {\n let domAfter, desc;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc = domAfter.pmViewDesc) && desc.parent == this))\n domAfter = domAfter.nextSibling;\n return domAfter ? this.posBeforeChild(desc) : this.posAtEnd;\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n let atEnd;\n if (dom == this.dom && this.contentDOM) {\n atEnd = offset > domIndex(this.contentDOM);\n }\n else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n }\n else if (this.dom.firstChild) {\n if (offset == 0)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = false;\n break;\n }\n if (search.previousSibling)\n break;\n }\n if (atEnd == null && offset == dom.childNodes.length)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = true;\n break;\n }\n if (search.nextSibling)\n break;\n }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart;\n }\n nearestDesc(dom, onlyNodes = false) {\n for (let first = true, cur = dom; cur; cur = cur.parentNode) {\n let desc = this.getDesc(cur), nodeDOM;\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && (nodeDOM = desc.nodeDOM) &&\n !(nodeDOM.nodeType == 1 ? nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : nodeDOM == dom))\n first = false;\n else\n return desc;\n }\n }\n }\n getDesc(dom) {\n let desc = dom.pmViewDesc;\n for (let cur = desc; cur; cur = cur.parent)\n if (cur == this)\n return desc;\n }\n posFromDOM(dom, offset, bias) {\n for (let scan = dom; scan; scan = scan.parentNode) {\n let desc = this.getDesc(scan);\n if (desc)\n return desc.localPosFromDOM(dom, offset, bias);\n }\n return -1;\n }\n // Find the desc for the node after the given pos, if any. (When a\n // parent node overrode rendering, there might not be one.)\n descAt(pos) {\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length)\n child = child.children[0];\n return child;\n }\n if (pos < end)\n return child.descAt(pos - offset - child.border);\n offset = end;\n }\n }\n domFromPos(pos, side) {\n if (!this.contentDOM)\n return { node: this.dom, offset: 0, atom: pos + 1 };\n // First find the position in the child array\n let i = 0, offset = 0;\n for (let curPos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = curPos + child.size;\n if (end > pos || child instanceof TrailingHackViewDesc) {\n offset = pos - curPos;\n break;\n }\n curPos = end;\n }\n // If this points into the middle of a child, call through\n if (offset)\n return this.children[i].domFromPos(offset - this.children[i].border, side);\n // Go back if there were any zero-length widgets with side >= 0 before this point\n for (let prev; i && !(prev = this.children[i - 1]).size && prev instanceof WidgetViewDesc && prev.side >= 0; i--) { }\n // Scan towards the first useable node\n if (side <= 0) {\n let prev, enter = true;\n for (;; i--, enter = false) {\n prev = i ? this.children[i - 1] : null;\n if (!prev || prev.dom.parentNode == this.contentDOM)\n break;\n }\n if (prev && side && enter && !prev.border && !prev.domAtom)\n return prev.domFromPos(prev.size, side);\n return { node: this.contentDOM, offset: prev ? domIndex(prev.dom) + 1 : 0 };\n }\n else {\n let next, enter = true;\n for (;; i++, enter = false) {\n next = i < this.children.length ? this.children[i] : null;\n if (!next || next.dom.parentNode == this.contentDOM)\n break;\n }\n if (next && enter && !next.border && !next.domAtom)\n return next.domFromPos(0, side);\n return { node: this.contentDOM, offset: next ? domIndex(next.dom) : this.contentDOM.childNodes.length };\n }\n }\n // Used to find a DOM range in a single parent for a given changed\n // range.\n parseRange(from, to, base = 0) {\n if (this.children.length == 0)\n return { node: this.contentDOM, from, to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length };\n let fromOffset = -1, toOffset = -1;\n for (let offset = base, i = 0;; i++) {\n let child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n let childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n return child.parseRange(from, to, childBase);\n from = offset;\n for (let j = i; j > 0; j--) {\n let prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break;\n }\n from -= prev.size;\n }\n if (fromOffset == -1)\n fromOffset = 0;\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (let j = i + 1; j < this.children.length; j++) {\n let next = this.children[j];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break;\n }\n to += next.size;\n }\n if (toOffset == -1)\n toOffset = this.contentDOM.childNodes.length;\n break;\n }\n offset = end;\n }\n return { node: this.contentDOM, from, to, fromOffset, toOffset };\n }\n emptyChildAt(side) {\n if (this.border || !this.contentDOM || !this.children.length)\n return false;\n let child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side);\n }\n domAfterPos(pos) {\n let { node, offset } = this.domFromPos(pos, 0);\n if (node.nodeType != 1 || offset == node.childNodes.length)\n throw new RangeError(\"No node after pos \" + pos);\n return node.childNodes[offset];\n }\n // View descs are responsible for setting any selection that falls\n // entirely inside of them, so that custom implementations can do\n // custom things with the selection. Note that this falls apart when\n // a selection starts in such a node and ends in another, in which\n // case we just use whatever domFromPos produces as a best effort.\n setSelection(anchor, head, root, force = false) {\n // If the selection falls entirely in a child, give it to that child\n let from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n return child.setSelection(anchor - offset - child.border, head - offset - child.border, root, force);\n offset = end;\n }\n let anchorDOM = this.domFromPos(anchor, anchor ? -1 : 1);\n let headDOM = head == anchor ? anchorDOM : this.domFromPos(head, head ? -1 : 1);\n let domSel = root.getSelection();\n let brKludge = false;\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073). On Safari,\n // the cursor sometimes inexplicable visually lags behind its\n // reported position in such situations (#1092).\n if ((gecko || safari) && anchor == head) {\n let { node, offset } = anchorDOM;\n if (node.nodeType == 3) {\n brKludge = !!(offset && node.nodeValue[offset - 1] == \"\\n\");\n // Issue #1128\n if (brKludge && offset == node.nodeValue.length) {\n for (let scan = node, after; scan; scan = scan.parentNode) {\n if (after = scan.nextSibling) {\n if (after.nodeName == \"BR\")\n anchorDOM = headDOM = { node: after.parentNode, offset: domIndex(after) + 1 };\n break;\n }\n let desc = scan.pmViewDesc;\n if (desc && desc.node && desc.node.isBlock)\n break;\n }\n }\n }\n else {\n let prev = node.childNodes[offset - 1];\n brKludge = prev && (prev.nodeName == \"BR\" || prev.contentEditable == \"false\");\n }\n }\n // Firefox can act strangely when the selection is in front of an\n // uneditable node. See #1163 and https://bugzilla.mozilla.org/show_bug.cgi?id=1709536\n if (gecko && domSel.focusNode && domSel.focusNode != headDOM.node && domSel.focusNode.nodeType == 1) {\n let after = domSel.focusNode.childNodes[domSel.focusOffset];\n if (after && after.contentEditable == \"false\")\n force = true;\n }\n if (!(force || brKludge && safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, domSel.focusNode, domSel.focusOffset))\n return;\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n let domSelExtended = false;\n if ((domSel.extend || anchor == head) && !brKludge) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head)\n domSel.extend(headDOM.node, headDOM.offset);\n domSelExtended = true;\n }\n catch (_) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n // Similarly, this could crash on Safari if the editor is hidden, and\n // there was no selection.\n }\n }\n if (!domSelExtended) {\n if (anchor > head) {\n let tmp = anchorDOM;\n anchorDOM = headDOM;\n headDOM = tmp;\n }\n let range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n }\n ignoreMutation(mutation) {\n return !this.contentDOM && mutation.type != \"selection\";\n }\n get contentLost() {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM);\n }\n // Remove a subtree of the element tree that has been touched\n // by a DOM change, so that the next update will redraw it.\n markDirty(from, to) {\n for (let offset = 0, i = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n let startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM))\n child.dirty = NODE_DIRTY;\n else\n child.markDirty(from - startInside, to - startInside);\n return;\n }\n else {\n child.dirty = child.dom == child.contentDOM && child.dom.parentNode == this.contentDOM && !child.children.length\n ? CONTENT_DIRTY : NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n }\n markParentsDirty() {\n let level = 1;\n for (let node = this.parent; node; node = node.parent, level++) {\n let dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty)\n node.dirty = dirty;\n }\n }\n get domAtom() { return false; }\n get ignoreForCoords() { return false; }\n}\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nclass WidgetViewDesc extends ViewDesc {\n constructor(parent, widget, view, pos) {\n let self, dom = widget.type.toDOM;\n if (typeof dom == \"function\")\n dom = dom(view, () => {\n if (!self)\n return pos;\n if (self.parent)\n return self.parent.posBeforeChild(self);\n });\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n let wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = \"false\";\n dom.classList.add(\"ProseMirror-widget\");\n }\n super(parent, [], dom, null);\n this.widget = widget;\n this.widget = widget;\n self = this;\n }\n matchesWidget(widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type);\n }\n parseRule() { return { ignore: true }; }\n stopEvent(event) {\n let stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false;\n }\n ignoreMutation(mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection;\n }\n destroy() {\n this.widget.type.destroy(this.dom);\n super.destroy();\n }\n get domAtom() { return true; }\n get side() { return this.widget.type.side; }\n}\nclass CompositionViewDesc extends ViewDesc {\n constructor(parent, dom, textDOM, text) {\n super(parent, [], dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n get size() { return this.text.length; }\n localPosFromDOM(dom, offset) {\n if (dom != this.textDOM)\n return this.posAtStart + (offset ? this.size : 0);\n return this.posAtStart + offset;\n }\n domFromPos(pos) {\n return { node: this.textDOM, offset: pos };\n }\n ignoreMutation(mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue;\n }\n}\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nclass MarkViewDesc extends ViewDesc {\n constructor(parent, mark, dom, contentDOM) {\n super(parent, [], dom, contentDOM);\n this.mark = mark;\n }\n static create(parent, mark, inline, view) {\n let custom = view.nodeViews[mark.type.name];\n let spec = custom && custom(mark, view, inline);\n if (!spec || !spec.dom)\n spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline));\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom);\n }\n parseRule() {\n if ((this.dirty & NODE_DIRTY) || this.mark.type.spec.reparseInView)\n return null;\n return { mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM };\n }\n matchesMark(mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark); }\n markDirty(from, to) {\n super.markDirty(from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n let parent = this.parent;\n while (!parent.node)\n parent = parent.parent;\n if (parent.dirty < this.dirty)\n parent.dirty = this.dirty;\n this.dirty = NOT_DIRTY;\n }\n }\n slice(from, to, view) {\n let copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n let nodes = this.children, size = this.size;\n if (to < size)\n nodes = replaceNodes(nodes, to, size, view);\n if (from > 0)\n nodes = replaceNodes(nodes, 0, from, view);\n for (let i = 0; i < nodes.length; i++)\n nodes[i].parent = copy;\n copy.children = nodes;\n return copy;\n }\n}\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nclass NodeViewDesc extends ViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n super(parent, [], dom, contentDOM);\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n this.nodeDOM = nodeDOM;\n }\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finicky\n // implementation details to the user code that they probably will\n // never need.)\n static create(parent, node, outerDeco, innerDeco, view, pos) {\n let custom = view.nodeViews[node.type.name], descObj;\n let spec = custom && custom(node, view, () => {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj)\n return pos;\n if (descObj.parent)\n return descObj.parent.posBeforeChild(descObj);\n }, outerDeco, innerDeco);\n let dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom)\n dom = document.createTextNode(node.text);\n else if (dom.nodeType != 3)\n throw new RangeError(\"Text must be rendered as a DOM text node\");\n }\n else if (!dom) {\n ({ dom, contentDOM } = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node)));\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by
\n if (!dom.hasAttribute(\"contenteditable\"))\n dom.contentEditable = \"false\";\n if (node.type.spec.draggable)\n dom.draggable = true;\n }\n let nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n if (spec)\n return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, spec, view, pos + 1);\n else if (node.isText)\n return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view);\n else\n return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, view, pos + 1);\n }\n parseRule() {\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView)\n return null;\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n let rule = { node: this.node.type.name, attrs: this.node.attrs };\n if (this.node.type.whitespace == \"pre\")\n rule.preserveWhitespace = \"full\";\n if (!this.contentDOM) {\n rule.getContent = () => this.node.content;\n }\n else if (!this.contentLost) {\n rule.contentElement = this.contentDOM;\n }\n else {\n // Chrome likes to randomly recreate parent nodes when\n // backspacing things. When that happens, this tries to find the\n // new parent.\n for (let i = this.children.length - 1; i >= 0; i--) {\n let child = this.children[i];\n if (this.dom.contains(child.dom.parentNode)) {\n rule.contentElement = child.dom.parentNode;\n break;\n }\n }\n if (!rule.contentElement)\n rule.getContent = () => Fragment.empty;\n }\n return rule;\n }\n matchesNode(node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco);\n }\n get size() { return this.node.nodeSize; }\n get border() { return this.node.isLeaf ? 0 : 1; }\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n updateChildren(view, pos) {\n let inline = this.node.inlineContent, off = pos;\n let composition = view.composing ? this.localCompositionInfo(view, pos) : null;\n let localComposition = composition && composition.pos > -1 ? composition : null;\n let compositionInChild = composition && composition.pos < 0;\n let updater = new ViewTreeUpdater(this, localComposition && localComposition.node, view);\n iterDeco(this.node, this.innerDeco, (widget, i, insideNode) => {\n if (widget.spec.marks)\n updater.syncToMarks(widget.spec.marks, inline, view);\n else if (widget.type.side >= 0 && !insideNode)\n updater.syncToMarks(i == this.node.childCount ? Mark.none : this.node.child(i).marks, inline, view);\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, (child, outerDeco, innerDeco, i) => {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view);\n // Try several strategies for drawing this node\n let compIndex;\n if (updater.findNodeMatch(child, outerDeco, innerDeco, i)) ;\n else if (compositionInChild && view.state.selection.from > off &&\n view.state.selection.to < off + child.nodeSize &&\n (compIndex = updater.findIndexWithChild(composition.node)) > -1 &&\n updater.updateNodeAt(child, outerDeco, innerDeco, compIndex, view)) ;\n else if (updater.updateNextNode(child, outerDeco, innerDeco, view, i, off)) ;\n else {\n // Add it as a new view\n updater.addNode(child, outerDeco, innerDeco, view, off);\n }\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks([], inline, view);\n if (this.node.isTextblock)\n updater.addTextblockHacks();\n updater.destroyRest();\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (localComposition)\n this.protectLocalComposition(view, localComposition);\n renderDescs(this.contentDOM, this.children, view);\n if (ios)\n iosHacks(this.dom);\n }\n }\n localCompositionInfo(view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node\n let { from, to } = view.state.selection;\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size)\n return null;\n let sel = view.domSelectionRange();\n let textNode = nearbyTextNode(sel.focusNode, sel.focusOffset);\n if (!textNode || !this.dom.contains(textNode.parentNode))\n return null;\n if (this.node.inlineContent) {\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n let text = textNode.nodeValue;\n let textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n return textPos < 0 ? null : { node: textNode, pos: textPos, text };\n }\n else {\n return { node: textNode, pos: -1, text: \"\" };\n }\n }\n protectLocalComposition(view, { node, pos, text }) {\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node))\n return;\n // Create a composition view for the orphaned nodes\n let topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM)\n break;\n while (topNode.previousSibling)\n topNode.parentNode.removeChild(topNode.previousSibling);\n while (topNode.nextSibling)\n topNode.parentNode.removeChild(topNode.nextSibling);\n if (topNode.pmViewDesc)\n topNode.pmViewDesc = undefined;\n }\n let desc = new CompositionViewDesc(this, topNode, node, text);\n view.input.compositionNodes.push(desc);\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n }\n // If this desc must be updated to match the given node decoration,\n // do so and return true.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node))\n return false;\n this.updateInner(node, outerDeco, innerDeco, view);\n return true;\n }\n updateInner(node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM)\n this.updateChildren(view, this.posAtStart);\n this.dirty = NOT_DIRTY;\n }\n updateOuterDeco(outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco))\n return;\n let needsWrap = this.nodeDOM.nodeType != 1;\n let oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM, computeOuterDeco(this.outerDeco, this.node, needsWrap), computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = undefined;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n }\n // Mark this node as being the selected node.\n selectNode() {\n if (this.nodeDOM.nodeType == 1)\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.dom.draggable = true;\n }\n // Remove selected node marking from this node.\n deselectNode() {\n if (this.nodeDOM.nodeType == 1)\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.dom.removeAttribute(\"draggable\");\n }\n get domAtom() { return this.node.isAtom; }\n}\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n let docView = new NodeViewDesc(undefined, doc, outerDeco, innerDeco, dom, dom, dom, view, 0);\n if (docView.contentDOM)\n docView.updateChildren(view, 0);\n return docView;\n}\nclass TextViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n super(parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view, 0);\n }\n parseRule() {\n let skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco)\n skip = skip.parentNode;\n return { skip: (skip || true) };\n }\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node))\n return false;\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM)\n view.trackWrites = null;\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true;\n }\n inParent() {\n let parentDOM = this.parent.contentDOM;\n for (let n = this.nodeDOM; n; n = n.parentNode)\n if (n == parentDOM)\n return true;\n return false;\n }\n domFromPos(pos) {\n return { node: this.nodeDOM, offset: pos };\n }\n localPosFromDOM(dom, offset, bias) {\n if (dom == this.nodeDOM)\n return this.posAtStart + Math.min(offset, this.node.text.length);\n return super.localPosFromDOM(dom, offset, bias);\n }\n ignoreMutation(mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\";\n }\n slice(from, to, view) {\n let node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom, view);\n }\n markDirty(from, to) {\n super.markDirty(from, to);\n if (this.dom != this.nodeDOM && (from == 0 || to == this.nodeDOM.nodeValue.length))\n this.dirty = NODE_DIRTY;\n }\n get domAtom() { return false; }\n}\n// A dummy desc used to tag trailing BR or IMG nodes created to work\n// around contentEditable terribleness.\nclass TrailingHackViewDesc extends ViewDesc {\n parseRule() { return { ignore: true }; }\n matchesHack(nodeName) { return this.dirty == NOT_DIRTY && this.dom.nodeName == nodeName; }\n get domAtom() { return true; }\n get ignoreForCoords() { return this.dom.nodeName == \"IMG\"; }\n}\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nclass CustomNodeViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec, view, pos) {\n super(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos);\n this.spec = spec;\n }\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY)\n return false;\n if (this.spec.update) {\n let result = this.spec.update(node, outerDeco, innerDeco);\n if (result)\n this.updateInner(node, outerDeco, innerDeco, view);\n return result;\n }\n else if (!this.contentDOM && !node.isLeaf) {\n return false;\n }\n else {\n return super.update(node, outerDeco, innerDeco, view);\n }\n }\n selectNode() {\n this.spec.selectNode ? this.spec.selectNode() : super.selectNode();\n }\n deselectNode() {\n this.spec.deselectNode ? this.spec.deselectNode() : super.deselectNode();\n }\n setSelection(anchor, head, root, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, root)\n : super.setSelection(anchor, head, root, force);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n stopEvent(event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n}\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n let dom = parentDOM.firstChild, written = false;\n for (let i = 0; i < descs.length; i++) {\n let desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) {\n dom = rm(dom);\n written = true;\n }\n dom = dom.nextSibling;\n }\n else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n let pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) {\n dom = rm(dom);\n written = true;\n }\n if (written && view.trackWrites == parentDOM)\n view.trackWrites = null;\n}\nconst OuterDecoLevel = function (nodeName) {\n if (nodeName)\n this.nodeName = nodeName;\n};\nOuterDecoLevel.prototype = Object.create(null);\nconst noDeco = [new OuterDecoLevel];\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0)\n return noDeco;\n let top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n for (let i = 0; i < outerDeco.length; i++) {\n let attrs = outerDeco[i].type.attrs;\n if (!attrs)\n continue;\n if (attrs.nodeName)\n result.push(top = new OuterDecoLevel(attrs.nodeName));\n for (let name in attrs) {\n let val = attrs[name];\n if (val == null)\n continue;\n if (needsWrap && result.length == 1)\n result.push(top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\"));\n if (name == \"class\")\n top.class = (top.class ? top.class + \" \" : \"\") + val;\n else if (name == \"style\")\n top.style = (top.style ? top.style + \";\" : \"\") + val;\n else if (name != \"nodeName\")\n top[name] = val;\n }\n }\n return result;\n}\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco)\n return nodeDOM;\n let curDOM = nodeDOM;\n for (let i = 0; i < curComputed.length; i++) {\n let deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n let parent;\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.nodeName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n }\n else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM;\n}\nfunction patchAttributes(dom, prev, cur) {\n for (let name in prev)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n dom.removeAttribute(name);\n for (let name in cur)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && cur[name] != prev[name])\n dom.setAttribute(name, cur[name]);\n if (prev.class != cur.class) {\n let prevList = prev.class ? prev.class.split(\" \").filter(Boolean) : [];\n let curList = cur.class ? cur.class.split(\" \").filter(Boolean) : [];\n for (let i = 0; i < prevList.length; i++)\n if (curList.indexOf(prevList[i]) == -1)\n dom.classList.remove(prevList[i]);\n for (let i = 0; i < curList.length; i++)\n if (prevList.indexOf(curList[i]) == -1)\n dom.classList.add(curList[i]);\n if (dom.classList.length == 0)\n dom.removeAttribute(\"class\");\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n let prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n dom.style.removeProperty(m[1]);\n }\n if (cur.style)\n dom.style.cssText += cur.style;\n }\n}\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1));\n}\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].type.eq(b[i].type))\n return false;\n return true;\n}\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n let next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next;\n}\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nclass ViewTreeUpdater {\n constructor(top, lock, view) {\n this.lock = lock;\n this.view = view;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n this.top = top;\n this.preMatch = preMatch(top.node.content, top);\n }\n // Destroy and remove the children between the given indices in\n // `this.top`.\n destroyBetween(start, end) {\n if (start == end)\n return;\n for (let i = start; i < end; i++)\n this.top.children[i].destroy();\n this.top.children.splice(start, end - start);\n this.changed = true;\n }\n // Destroy all remaining children in `this.top`.\n destroyRest() {\n this.destroyBetween(this.index, this.top.children.length);\n }\n // Sync the current stack of mark descs with the given array of\n // marks, reusing existing mark descs when possible.\n syncToMarks(marks, inline, view) {\n let keep = 0, depth = this.stack.length >> 1;\n let maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1])\n .matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n keep++;\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n let found = -1;\n for (let i = this.index; i < Math.min(this.index + 3, this.top.children.length); i++) {\n let next = this.top.children[i];\n if (next.matchesMark(marks[depth]) && !this.isLocked(next.dom)) {\n found = i;\n break;\n }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n }\n else {\n let markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n }\n // Try to find a node desc matching the given data. Skip over it and\n // return true when successful.\n findNodeMatch(node, outerDeco, innerDeco, index) {\n let found = -1, targetDesc;\n if (index >= this.preMatch.index &&\n (targetDesc = this.preMatch.matches[index - this.preMatch.index]).parent == this.top &&\n targetDesc.matchesNode(node, outerDeco, innerDeco)) {\n found = this.top.children.indexOf(targetDesc, this.index);\n }\n else {\n for (let i = this.index, e = Math.min(this.top.children.length, i + 5); i < e; i++) {\n let child = this.top.children[i];\n if (child.matchesNode(node, outerDeco, innerDeco) && !this.preMatch.matched.has(child)) {\n found = i;\n break;\n }\n }\n }\n if (found < 0)\n return false;\n this.destroyBetween(this.index, found);\n this.index++;\n return true;\n }\n updateNodeAt(node, outerDeco, innerDeco, index, view) {\n let child = this.top.children[index];\n if (child.dirty == NODE_DIRTY && child.dom == child.contentDOM)\n child.dirty = CONTENT_DIRTY;\n if (!child.update(node, outerDeco, innerDeco, view))\n return false;\n this.destroyBetween(this.index, index);\n this.index++;\n return true;\n }\n findIndexWithChild(domNode) {\n for (;;) {\n let parent = domNode.parentNode;\n if (!parent)\n return -1;\n if (parent == this.top.contentDOM) {\n let desc = domNode.pmViewDesc;\n if (desc)\n for (let i = this.index; i < this.top.children.length; i++) {\n if (this.top.children[i] == desc)\n return i;\n }\n return -1;\n }\n domNode = parent;\n }\n }\n // Try to update the next node, if any, to the given data. Checks\n // pre-matches to avoid overwriting nodes that could still be used.\n updateNextNode(node, outerDeco, innerDeco, view, index, pos) {\n for (let i = this.index; i < this.top.children.length; i++) {\n let next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n let preMatch = this.preMatch.matched.get(next);\n if (preMatch != null && preMatch != index)\n return false;\n let nextDOM = next.dom, updated;\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n let locked = this.isLocked(nextDOM) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM)\n this.changed = true;\n this.index++;\n return true;\n }\n else if (!locked && (updated = this.recreateWrapper(next, node, outerDeco, innerDeco, view, pos))) {\n this.top.children[this.index] = updated;\n if (updated.contentDOM) {\n updated.dirty = CONTENT_DIRTY;\n updated.updateChildren(view, pos + 1);\n updated.dirty = NOT_DIRTY;\n }\n this.changed = true;\n this.index++;\n return true;\n }\n break;\n }\n }\n return false;\n }\n // When a node with content is replaced by a different node with\n // identical content, move over its children.\n recreateWrapper(next, node, outerDeco, innerDeco, view, pos) {\n if (next.dirty || node.isAtom || !next.children.length ||\n !next.node.content.eq(node.content))\n return null;\n let wrapper = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (wrapper.contentDOM) {\n wrapper.children = next.children;\n next.children = [];\n for (let ch of wrapper.children)\n ch.parent = wrapper;\n }\n next.destroy();\n return wrapper;\n }\n // Insert the node as a newly created node desc.\n addNode(node, outerDeco, innerDeco, view, pos) {\n let desc = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (desc.contentDOM)\n desc.updateChildren(view, pos + 1);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n placeWidget(widget, view, pos) {\n let next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) &&\n (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n }\n else {\n let desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n }\n // Make sure a textblock looks and behaves correctly in\n // contentEditable.\n addTextblockHacks() {\n let lastChild = this.top.children[this.index - 1], parent = this.top;\n while (lastChild instanceof MarkViewDesc) {\n parent = lastChild;\n lastChild = parent.children[parent.children.length - 1];\n }\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text) ||\n (this.view.requiresGeckoHackNode && /\\s$/.test(lastChild.node.text))) {\n // Avoid bugs in Safari's cursor drawing (#1165) and Chrome's mouse selection (#1152)\n if ((safari || chrome) && lastChild && lastChild.dom.contentEditable == \"false\")\n this.addHackNode(\"IMG\", parent);\n this.addHackNode(\"BR\", this.top);\n }\n }\n addHackNode(nodeName, parent) {\n if (parent == this.top && this.index < parent.children.length && parent.children[this.index].matchesHack(nodeName)) {\n this.index++;\n }\n else {\n let dom = document.createElement(nodeName);\n if (nodeName == \"IMG\") {\n dom.className = \"ProseMirror-separator\";\n dom.alt = \"\";\n }\n if (nodeName == \"BR\")\n dom.className = \"ProseMirror-trailingBreak\";\n let hack = new TrailingHackViewDesc(this.top, [], dom, null);\n if (parent != this.top)\n parent.children.push(hack);\n else\n parent.children.splice(this.index++, 0, hack);\n this.changed = true;\n }\n }\n isLocked(node) {\n return this.lock && (node == this.lock || node.nodeType == 1 && node.contains(this.lock.parentNode));\n }\n}\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing those\n// for other nodes. Returns the fragment index of the first node that\n// is part of the sequence of matched nodes at the end of the\n// fragment.\nfunction preMatch(frag, parentDesc) {\n let curDesc = parentDesc, descI = curDesc.children.length;\n let fI = frag.childCount, matched = new Map, matches = [];\n outer: while (fI > 0) {\n let desc;\n for (;;) {\n if (descI) {\n let next = curDesc.children[descI - 1];\n if (next instanceof MarkViewDesc) {\n curDesc = next;\n descI = next.children.length;\n }\n else {\n desc = next;\n descI--;\n break;\n }\n }\n else if (curDesc == parentDesc) {\n break outer;\n }\n else {\n // FIXME\n descI = curDesc.parent.children.indexOf(curDesc);\n curDesc = curDesc.parent;\n }\n }\n let node = desc.node;\n if (!node)\n continue;\n if (node != frag.child(fI - 1))\n break;\n --fI;\n matched.set(desc, fI);\n matches.push(desc);\n }\n return { index: fI, matched, matches: matches.reverse() };\n}\nfunction compareSide(a, b) {\n return a.type.side - b.type.side;\n}\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n let locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (let i = 0; i < parent.childCount; i++) {\n let child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return;\n }\n let decoIndex = 0, active = [], restNode = null;\n for (let parentIndex = 0;;) {\n let widget, widgets;\n while (decoIndex < locals.length && locals[decoIndex].to == offset) {\n let next = locals[decoIndex++];\n if (next.widget) {\n if (!widget)\n widget = next;\n else\n (widgets || (widgets = [widget])).push(next);\n }\n }\n if (widget) {\n if (widgets) {\n widgets.sort(compareSide);\n for (let i = 0; i < widgets.length; i++)\n onWidget(widgets[i], parentIndex, !!restNode);\n }\n else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n let child, index;\n if (restNode) {\n index = -1;\n child = restNode;\n restNode = null;\n }\n else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child = parent.child(parentIndex++);\n }\n else {\n break;\n }\n for (let i = 0; i < active.length; i++)\n if (active[i].to <= offset)\n active.splice(i--, 1);\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n active.push(locals[decoIndex++]);\n let end = offset + child.nodeSize;\n if (child.isText) {\n let cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt)\n cutAt = locals[decoIndex].from;\n for (let i = 0; i < active.length; i++)\n if (active[i].to < cutAt)\n cutAt = active[i].to;\n if (cutAt < end) {\n restNode = child.cut(cutAt - offset);\n child = child.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n else {\n while (decoIndex < locals.length && locals[decoIndex].to < end)\n decoIndex++;\n }\n let outerDeco = child.isInline && !child.isLeaf ? active.filter(d => !d.inline) : active.slice();\n onNode(child, outerDeco, deco.forChild(offset, child), index);\n offset = end;\n }\n}\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n let oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\nfunction nearbyTextNode(node, offset) {\n for (;;) {\n if (node.nodeType == 3)\n return node;\n if (node.nodeType == 1 && offset > 0) {\n if (node.childNodes.length > offset && node.childNodes[offset].nodeType == 3)\n return node.childNodes[offset];\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n }\n else if (node.nodeType == 1 && offset < node.childNodes.length) {\n node = node.childNodes[offset];\n offset = 0;\n }\n else {\n return null;\n }\n }\n}\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (let i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n let child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText)\n continue;\n let str = child.text;\n while (i < frag.childCount) {\n let next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText)\n break;\n str += next.text;\n }\n if (pos >= from) {\n if (pos >= to && str.slice(to - text.length - childStart, to - childStart) == text)\n return to - text.length;\n let found = childStart < to ? str.lastIndexOf(text, to - childStart - 1) : -1;\n if (found >= 0 && found + text.length + childStart >= from)\n return childStart + found;\n if (from == to && str.length >= (to + text.length) - childStart &&\n str.slice(to - childStart, to - childStart + text.length) == text)\n return to;\n }\n }\n return -1;\n}\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n let result = [];\n for (let i = 0, off = 0; i < nodes.length; i++) {\n let child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n }\n else {\n if (start < from)\n result.push(child.slice(0, from - start, view));\n if (replacement) {\n result.push(replacement);\n replacement = undefined;\n }\n if (end > to)\n result.push(child.slice(to - start, child.size, view));\n }\n }\n return result;\n}\n\nfunction selectionFromDOM(view, origin = null) {\n let domSel = view.domSelectionRange(), doc = view.state.doc;\n if (!domSel.focusNode)\n return null;\n let nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n let head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset, 1);\n if (head < 0)\n return null;\n let $head = doc.resolve(head), $anchor, selection;\n if (selectionCollapsed(domSel)) {\n $anchor = $head;\n while (nearestDesc && !nearestDesc.node)\n nearestDesc = nearestDesc.parent;\n let nearestDescNode = nearestDesc.node;\n if (nearestDesc && nearestDescNode.isAtom && NodeSelection.isSelectable(nearestDescNode) && nearestDesc.parent\n && !(nearestDescNode.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n let pos = nearestDesc.posBefore;\n selection = new NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n }\n else {\n let anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset, 1);\n if (anchor < 0)\n return null;\n $anchor = doc.resolve(anchor);\n }\n if (!selection) {\n let bias = origin == \"pointer\" || (view.state.selection.head < $head.pos && !inWidget) ? 1 : -1;\n selection = selectionBetween(view, $anchor, $head, bias);\n }\n return selection;\n}\nfunction editorOwnsSelection(view) {\n return view.editable ? view.hasFocus() :\n hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom);\n}\nfunction selectionToDOM(view, force = false) {\n let sel = view.state.selection;\n syncNodeSelection(view, sel);\n if (!editorOwnsSelection(view))\n return;\n // The delayed drag selection causes issues with Cell Selections\n // in Safari. And the drag selection delay is to workarond issues\n // which only present in Chrome.\n if (!force && view.input.mouseDown && view.input.mouseDown.allowDefault && chrome) {\n let domSel = view.domSelectionRange(), curSel = view.domObserver.currentSelection;\n if (domSel.anchorNode && curSel.anchorNode &&\n isEquivalentPosition(domSel.anchorNode, domSel.anchorOffset, curSel.anchorNode, curSel.anchorOffset)) {\n view.input.mouseDown.delayedSelectionSync = true;\n view.domObserver.setCurSelection();\n return;\n }\n }\n view.domObserver.disconnectSelection();\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n }\n else {\n let { anchor, head } = sel, resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n resetEditableFrom = temporarilyEditableNear(view, sel.from);\n if (!sel.empty && !sel.$from.parent.inlineContent)\n resetEditableTo = temporarilyEditableNear(view, sel.to);\n }\n view.docView.setSelection(anchor, head, view.root, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom)\n resetEditable(resetEditableFrom);\n if (resetEditableTo)\n resetEditable(resetEditableTo);\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }\n else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document)\n removeClassOnSelectionChange(view);\n }\n }\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\nconst brokenSelectBetweenUneditable = safari || chrome && chrome_version < 63;\nfunction temporarilyEditableNear(view, pos) {\n let { node, offset } = view.docView.domFromPos(pos, 0);\n let after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n let before = offset ? node.childNodes[offset - 1] : null;\n if (safari && after && after.contentEditable == \"false\")\n return setEditable(after);\n if ((!after || after.contentEditable == \"false\") &&\n (!before || before.contentEditable == \"false\")) {\n if (after)\n return setEditable(after);\n else if (before)\n return setEditable(before);\n }\n}\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (safari && element.draggable) {\n element.draggable = false;\n element.wasDraggable = true;\n }\n return element;\n}\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) {\n element.draggable = true;\n element.wasDraggable = null;\n }\n}\nfunction removeClassOnSelectionChange(view) {\n let doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n let domSel = view.domSelectionRange();\n let node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.input.hideSelectionGuard = () => {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n setTimeout(() => {\n if (!editorOwnsSelection(view) || view.state.selection.visible)\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }, 20);\n }\n });\n}\nfunction selectCursorWrapper(view) {\n let domSel = view.domSelection(), range = document.createRange();\n let node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img)\n range.setEnd(node.parentNode, domIndex(node) + 1);\n else\n range.setEnd(node, 0);\n range.collapse(false);\n domSel.removeAllRanges();\n domSel.addRange(range);\n // Kludge to kill 'control selection' in IE11 when selecting an\n // invisible cursor wrapper, since that would result in those weird\n // resize handles and a selection that considers the absolutely\n // positioned wrapper, rather than the root editable node, the\n // focused element.\n if (!img && !view.state.selection.visible && ie && ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof NodeSelection) {\n let desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc)\n desc.selectNode();\n view.lastSelectedViewDesc = desc;\n }\n }\n else {\n clearNodeSelection(view);\n }\n}\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n view.lastSelectedViewDesc.deselectNode();\n view.lastSelectedViewDesc = undefined;\n }\n}\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", f => f(view, $anchor, $head))\n || TextSelection.between($anchor, $head, bias);\n}\nfunction hasFocusAndSelection(view) {\n if (view.editable && !view.hasFocus())\n return false;\n return hasSelection(view);\n}\nfunction hasSelection(view) {\n let sel = view.domSelectionRange();\n if (!sel.anchorNode)\n return false;\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode));\n }\n catch (_) {\n return false;\n }\n}\nfunction anchorInRightPlace(view) {\n let anchorDOM = view.docView.domFromPos(view.state.selection.anchor, 0);\n let domSel = view.domSelectionRange();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset);\n}\n\nfunction moveSelectionBlock(state, dir) {\n let { $anchor, $head } = state.selection;\n let $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n let $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && Selection.findFrom($start, dir);\n}\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true;\n}\nfunction selectHorizontally(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection) {\n if (mods.indexOf(\"s\") > -1) {\n let { $head } = sel, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter;\n if (!node || node.isText || !node.isLeaf)\n return false;\n let $newHead = view.state.doc.resolve($head.pos + node.nodeSize * (dir < 0 ? -1 : 1));\n return apply(view, new TextSelection(sel.$anchor, $newHead));\n }\n else if (!sel.empty) {\n return false;\n }\n else if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n return false;\n }\n else if (!(mac && mods.indexOf(\"m\") > -1)) {\n let $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText)\n return false;\n let nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM))\n return false;\n if (NodeSelection.isSelectable(node)) {\n return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head));\n }\n else if (webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)));\n }\n else {\n return false;\n }\n }\n }\n else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from));\n }\n else {\n let next = moveSelectionBlock(view.state, dir);\n if (next)\n return apply(view, next);\n return false;\n }\n}\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction isIgnorable(dom, dir) {\n let desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != \"BR\");\n}\nfunction skipIgnoredNodes(view, dir) {\n return dir < 0 ? skipIgnoredNodesBefore(view) : skipIgnoredNodesAfter(view);\n}\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesBefore(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset], -1))\n force = true;\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break;\n }\n else {\n let before = node.childNodes[offset - 1];\n if (isIgnorable(before, -1)) {\n moveNode = node;\n moveOffset = --offset;\n }\n else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n }\n else\n break;\n }\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let prev = node.previousSibling;\n while (prev && isIgnorable(prev, -1)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = 0;\n }\n else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force)\n setSelFocus(view, node, offset);\n else if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesAfter(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let len = nodeLen(node);\n let moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1)\n break;\n let after = node.childNodes[offset];\n if (isIgnorable(after, 1)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else\n break;\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let next = node.nextSibling;\n while (next && isIgnorable(next, 1)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = len = 0;\n }\n else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\nfunction isBlockNode(dom) {\n let desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock;\n}\nfunction textNodeAfter(node, offset) {\n while (node && offset == node.childNodes.length && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n while (node && offset < node.childNodes.length) {\n let next = node.childNodes[offset];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = 0;\n }\n}\nfunction textNodeBefore(node, offset) {\n while (node && !offset && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n while (node && offset) {\n let next = node.childNodes[offset - 1];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = node.childNodes.length;\n }\n}\nfunction setSelFocus(view, node, offset) {\n if (node.nodeType != 3) {\n let before, after;\n if (after = textNodeAfter(node, offset)) {\n node = after;\n offset = 0;\n }\n else if (before = textNodeBefore(node, offset)) {\n node = before;\n offset = before.nodeValue.length;\n }\n }\n let sel = view.domSelection();\n if (selectionCollapsed(sel)) {\n let range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n let { state } = view;\n // If no state update ends up happening, reset the selection.\n setTimeout(() => {\n if (view.state == state)\n selectionToDOM(view);\n }, 50);\n}\nfunction findDirection(view, pos) {\n let $pos = view.state.doc.resolve(pos);\n if (!(chrome || windows) && $pos.parent.inlineContent) {\n let coords = view.coordsAtPos(pos);\n if (pos > $pos.start()) {\n let before = view.coordsAtPos(pos - 1);\n let mid = (before.top + before.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(before.left - coords.left) > 1)\n return before.left < coords.left ? \"ltr\" : \"rtl\";\n }\n if (pos < $pos.end()) {\n let after = view.coordsAtPos(pos + 1);\n let mid = (after.top + after.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(after.left - coords.left) > 1)\n return after.left > coords.left ? \"ltr\" : \"rtl\";\n }\n }\n let computed = getComputedStyle(view.dom).direction;\n return computed == \"rtl\" ? \"rtl\" : \"ltr\";\n}\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection && !sel.empty || mods.indexOf(\"s\") > -1)\n return false;\n if (mac && mods.indexOf(\"m\") > -1)\n return false;\n let { $from, $to } = sel;\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n }\n if (!$from.parent.inlineContent) {\n let side = dir < 0 ? $from : $to;\n let beyond = sel instanceof AllSelection ? Selection.near(side, dir) : Selection.findFrom(side, dir);\n return beyond ? apply(view, beyond) : false;\n }\n return false;\n}\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection))\n return true;\n let { $head, $anchor, empty } = view.state.selection;\n if (!$head.sameParent($anchor))\n return true;\n if (!empty)\n return false;\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\"))\n return true;\n let nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n let tr = view.state.tr;\n if (dir < 0)\n tr.delete($head.pos - nextNode.nodeSize, $head.pos);\n else\n tr.delete($head.pos, $head.pos + nextNode.nodeSize);\n view.dispatch(tr);\n return true;\n }\n return false;\n}\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n// Issue #867 / #1090 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Safari (and at some point in the past, Chrome) does really\n// wrong things when the down arrow is pressed when the cursor is\n// directly at the start of a textblock and has an uneditable node\n// after it\nfunction safariDownArrowBug(view) {\n if (!safari || view.state.selection.$head.parentOffset > 0)\n return false;\n let { focusNode, focusOffset } = view.domSelectionRange();\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n let child = focusNode.firstChild;\n switchEditable(view, child, \"true\");\n setTimeout(() => switchEditable(view, child, \"false\"), 20);\n }\n return false;\n}\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\nfunction getMods(event) {\n let result = \"\";\n if (event.ctrlKey)\n result += \"c\";\n if (event.metaKey)\n result += \"m\";\n if (event.altKey)\n result += \"a\";\n if (event.shiftKey)\n result += \"s\";\n return result;\n}\nfunction captureKeyDown(view, event) {\n let code = event.keyCode, mods = getMods(event);\n if (code == 8 || (mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodes(view, -1);\n }\n else if ((code == 46 && !event.shiftKey) || (mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodes(view, 1);\n }\n else if (code == 13 || code == 27) { // Enter, Esc\n return true;\n }\n else if (code == 37 || (mac && code == 66 && mods == \"c\")) { // Left arrow, Ctrl-b on Mac\n let dir = code == 37 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? -1 : 1) : -1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 39 || (mac && code == 70 && mods == \"c\")) { // Right arrow, Ctrl-f on Mac\n let dir = code == 39 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? 1 : -1) : 1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 38 || (mac && code == 80 && mods == \"c\")) { // Up arrow, Ctrl-p on Mac\n return selectVertically(view, -1, mods) || skipIgnoredNodes(view, -1);\n }\n else if (code == 40 || (mac && code == 78 && mods == \"c\")) { // Down arrow, Ctrl-n on Mac\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodes(view, 1);\n }\n else if (mods == (mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true;\n }\n return false;\n}\n\nfunction serializeForClipboard(view, slice) {\n view.someProp(\"transformCopied\", f => { slice = f(slice, view); });\n let context = [], { content, openStart, openEnd } = slice;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n let node = content.firstChild;\n context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);\n content = node.content;\n }\n let serializer = view.someProp(\"clipboardSerializer\") || DOMSerializer.fromSchema(view.state.schema);\n let doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, { document: doc }));\n let firstChild = wrap.firstChild, needsWrap, wrappers = 0;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (let i = needsWrap.length - 1; i >= 0; i--) {\n let wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild)\n wrapper.appendChild(wrap.firstChild);\n wrap.appendChild(wrapper);\n wrappers++;\n }\n firstChild = wrap.firstChild;\n }\n if (firstChild && firstChild.nodeType == 1)\n firstChild.setAttribute(\"data-pm-slice\", `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : \"\"} ${JSON.stringify(context)}`);\n let text = view.someProp(\"clipboardTextSerializer\", f => f(slice, view)) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n return { dom: wrap, text };\n}\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n let inCode = $context.parent.type.spec.code;\n let dom, slice;\n if (!html && !text)\n return null;\n let asText = text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", f => { text = f(text, inCode || plainText, view); });\n if (inCode)\n return text ? new Slice(Fragment.from(view.state.schema.text(text.replace(/\\r\\n?/g, \"\\n\"))), 0, 0) : Slice.empty;\n let parsed = view.someProp(\"clipboardTextParser\", f => f(text, $context, plainText, view));\n if (parsed) {\n slice = parsed;\n }\n else {\n let marks = $context.marks();\n let { schema } = view.state, serializer = DOMSerializer.fromSchema(schema);\n dom = document.createElement(\"div\");\n text.split(/(?:\\r\\n?|\\n)+/).forEach(block => {\n let p = dom.appendChild(document.createElement(\"p\"));\n if (block)\n p.appendChild(serializer.serializeNode(schema.text(block, marks)));\n });\n }\n }\n else {\n view.someProp(\"transformPastedHTML\", f => { html = f(html, view); });\n dom = readHTML(html);\n if (webkit)\n restoreReplacedSpaces(dom);\n }\n let contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n let sliceData = contextNode && /^(\\d+) (\\d+)(?: -(\\d+))? (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\") || \"\");\n if (sliceData && sliceData[3])\n for (let i = +sliceData[3]; i > 0; i--) {\n let child = dom.firstChild;\n while (child && child.nodeType != 1)\n child = child.nextSibling;\n if (!child)\n break;\n dom = child;\n }\n if (!slice) {\n let parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {\n preserveWhitespace: !!(asText || sliceData),\n context: $context,\n ruleFromNode(dom) {\n if (dom.nodeName == \"BR\" && !dom.nextSibling &&\n dom.parentNode && !inlineParents.test(dom.parentNode.nodeName))\n return { ignore: true };\n return null;\n }\n });\n }\n if (sliceData) {\n slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[4]);\n }\n else { // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), true);\n if (slice.openStart || slice.openEnd) {\n let openStart = 0, openEnd = 0;\n for (let node = slice.content.firstChild; openStart < slice.openStart && !node.type.spec.isolating; openStart++, node = node.firstChild) { }\n for (let node = slice.content.lastChild; openEnd < slice.openEnd && !node.type.spec.isolating; openEnd++, node = node.lastChild) { }\n slice = closeSlice(slice, openStart, openEnd);\n }\n }\n view.someProp(\"transformPasted\", f => { slice = f(slice, view); });\n return slice;\n}\nconst inlineParents = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2)\n return fragment;\n for (let d = $context.depth; d >= 0; d--) {\n let parent = $context.node(d);\n let match = parent.contentMatchAt($context.index(d));\n let lastWrap, result = [];\n fragment.forEach(node => {\n if (!result)\n return;\n let wrap = match.findWrapping(node.type), inLast;\n if (!wrap)\n return result = null;\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n }\n else {\n if (result.length)\n result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length);\n let wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type);\n lastWrap = wrap;\n }\n });\n if (result)\n return Fragment.from(result);\n }\n return fragment;\n}\nfunction withWrappers(node, wrap, from = 0) {\n for (let i = wrap.length - 1; i >= from; i--)\n node = wrap[i].create(null, Fragment.from(node));\n return node;\n}\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n let inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner)\n return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner));\n let match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1))));\n }\n}\nfunction closeRight(node, depth) {\n if (depth == 0)\n return node;\n let fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n let fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);\n return node.copy(fragment.append(fill));\n}\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n let node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (fragment.childCount > 1)\n openEnd = 0;\n if (depth < to - 1)\n inner = closeRange(inner, side, from, to, depth + 1, openEnd);\n if (depth >= from)\n inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true));\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner));\n}\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd);\n if (openEnd < slice.openEnd)\n slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd);\n return slice;\n}\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"..\"` the table cells are ignored.\nconst wrapMap = {\n thead: [\"table\"],\n tbody: [\"table\"],\n tfoot: [\"table\"],\n caption: [\"table\"],\n colgroup: [\"table\"],\n col: [\"table\", \"colgroup\"],\n tr: [\"table\", \"tbody\"],\n td: [\"table\", \"tbody\", \"tr\"],\n th: [\"table\", \"tbody\", \"tr\"]\n};\nlet _detachedDoc = null;\nfunction detachedDoc() {\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument(\"title\"));\n}\nfunction readHTML(html) {\n let metas = /^(\\s*]*>)*/.exec(html);\n if (metas)\n html = html.slice(metas[0].length);\n let elt = detachedDoc().createElement(\"div\");\n let firstTag = /<([a-z][^>\\s]+)/i.exec(html), wrap;\n if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()])\n html = wrap.map(n => \"<\" + n + \">\").join(\"\") + html + wrap.map(n => \"\").reverse().join(\"\");\n elt.innerHTML = html;\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n elt = elt.querySelector(wrap[i]) || elt;\n return elt;\n}\n// Webkit browsers do some hard-to-predict replacement of regular\n// spaces with non-breaking spaces when putting content on the\n// clipboard. This tries to convert such non-breaking spaces (which\n// will be wrapped in a plain span on Chrome, a span with class\n// Apple-converted-space on Safari) back to regular spaces.\nfunction restoreReplacedSpaces(dom) {\n let nodes = dom.querySelectorAll(chrome ? \"span:not([class]):not([style])\" : \"span.Apple-converted-space\");\n for (let i = 0; i < nodes.length; i++) {\n let node = nodes[i];\n if (node.childNodes.length == 1 && node.textContent == \"\\u00a0\" && node.parentNode)\n node.parentNode.replaceChild(dom.ownerDocument.createTextNode(\" \"), node);\n }\n}\nfunction addContext(slice, context) {\n if (!slice.size)\n return slice;\n let schema = slice.content.firstChild.type.schema, array;\n try {\n array = JSON.parse(context);\n }\n catch (e) {\n return slice;\n }\n let { content, openStart, openEnd } = slice;\n for (let i = array.length - 2; i >= 0; i -= 2) {\n let type = schema.nodes[array[i]];\n if (!type || type.hasRequiredAttrs())\n break;\n content = Fragment.from(type.create(array[i + 1], content));\n openStart++;\n openEnd++;\n }\n return new Slice(content, openStart, openEnd);\n}\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nconst handlers = {};\nconst editHandlers = {};\nconst passiveHandlers = { touchstart: true, touchmove: true };\nclass InputState {\n constructor() {\n this.shiftKey = false;\n this.mouseDown = null;\n this.lastKeyCode = null;\n this.lastKeyCodeTime = 0;\n this.lastClick = { time: 0, x: 0, y: 0, type: \"\" };\n this.lastSelectionOrigin = null;\n this.lastSelectionTime = 0;\n this.lastIOSEnter = 0;\n this.lastIOSEnterFallbackTimeout = -1;\n this.lastFocus = 0;\n this.lastTouch = 0;\n this.lastAndroidDelete = 0;\n this.composing = false;\n this.composingTimeout = -1;\n this.compositionNodes = [];\n this.compositionEndedAt = -2e8;\n this.compositionID = 1;\n // Set to a composition ID when there are pending changes at compositionend\n this.compositionPendingChanges = 0;\n this.domChangeCount = 0;\n this.eventHandlers = Object.create(null);\n this.hideSelectionGuard = null;\n }\n}\nfunction initInput(view) {\n for (let event in handlers) {\n let handler = handlers[event];\n view.dom.addEventListener(event, view.input.eventHandlers[event] = (event) => {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n handler(view, event);\n }, passiveHandlers[event] ? { passive: true } : undefined);\n }\n // On Safari, for reasons beyond my understanding, adding an input\n // event handler makes an issue where the composition vanishes when\n // you press enter go away.\n if (safari)\n view.dom.addEventListener(\"input\", () => null);\n ensureListeners(view);\n}\nfunction setSelectionOrigin(view, origin) {\n view.input.lastSelectionOrigin = origin;\n view.input.lastSelectionTime = Date.now();\n}\nfunction destroyInput(view) {\n view.domObserver.stop();\n for (let type in view.input.eventHandlers)\n view.dom.removeEventListener(type, view.input.eventHandlers[type]);\n clearTimeout(view.input.composingTimeout);\n clearTimeout(view.input.lastIOSEnterFallbackTimeout);\n}\nfunction ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", currentHandlers => {\n for (let type in currentHandlers)\n if (!view.input.eventHandlers[type])\n view.dom.addEventListener(type, view.input.eventHandlers[type] = event => runCustomHandler(view, event));\n });\n}\nfunction runCustomHandler(view, event) {\n return view.someProp(\"handleDOMEvents\", handlers => {\n let handler = handlers[event.type];\n return handler ? handler(view, event) || event.defaultPrevented : false;\n });\n}\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles)\n return true;\n if (event.defaultPrevented)\n return false;\n for (let node = event.target; node != view.dom; node = node.parentNode)\n if (!node || node.nodeType == 11 ||\n (node.pmViewDesc && node.pmViewDesc.stopEvent(event)))\n return false;\n return true;\n}\nfunction dispatchEvent(view, event) {\n if (!runCustomHandler(view, event) && handlers[event.type] &&\n (view.editable || !(event.type in editHandlers)))\n handlers[event.type](view, event);\n}\neditHandlers.keydown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.keyCode == 16 || event.shiftKey;\n if (inOrNearComposition(view, event))\n return;\n view.input.lastKeyCode = event.keyCode;\n view.input.lastKeyCodeTime = Date.now();\n // Suppress enter key events on Chrome Android, because those tend\n // to be part of a confused sequence of composition events fired,\n // and handling them eagerly tends to corrupt the input.\n if (android && chrome && event.keyCode == 13)\n return;\n if (event.keyCode != 229)\n view.domObserver.forceFlush();\n // On iOS, if we preventDefault enter key presses, the virtual\n // keyboard gets confused. So the hack here is to set a flag that\n // makes the DOM change code recognize that what just happens should\n // be replaced by whatever the Enter key handlers do.\n if (ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n let now = Date.now();\n view.input.lastIOSEnter = now;\n view.input.lastIOSEnterFallbackTimeout = setTimeout(() => {\n if (view.input.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")));\n view.input.lastIOSEnter = 0;\n }\n }, 200);\n }\n else if (view.someProp(\"handleKeyDown\", f => f(view, event)) || captureKeyDown(view, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"key\");\n }\n};\neditHandlers.keyup = (view, event) => {\n if (event.keyCode == 16)\n view.input.shiftKey = false;\n};\neditHandlers.keypress = (view, _event) => {\n let event = _event;\n if (inOrNearComposition(view, event) || !event.charCode ||\n event.ctrlKey && !event.altKey || mac && event.metaKey)\n return;\n if (view.someProp(\"handleKeyPress\", f => f(view, event))) {\n event.preventDefault();\n return;\n }\n let sel = view.state.selection;\n if (!(sel instanceof TextSelection) || !sel.$from.sameParent(sel.$to)) {\n let text = String.fromCharCode(event.charCode);\n if (!/[\\r\\n]/.test(text) && !view.someProp(\"handleTextInput\", f => f(view, sel.$from.pos, sel.$to.pos, text)))\n view.dispatch(view.state.tr.insertText(text).scrollIntoView());\n event.preventDefault();\n }\n};\nfunction eventCoords(event) { return { left: event.clientX, top: event.clientY }; }\nfunction isNear(event, click) {\n let dx = click.x - event.clientX, dy = click.y - event.clientY;\n return dx * dx + dy * dy < 100;\n}\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n if (view.someProp(propName, f => i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true)\n : f(view, pos, $pos.node(i), $pos.before(i), event, false)))\n return true;\n }\n return false;\n}\nfunction updateSelection(view, selection, origin) {\n if (!view.focused)\n view.focus();\n let tr = view.state.tr.setSelection(selection);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n view.dispatch(tr);\n}\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter;\n if (node && node.isAtom && NodeSelection.isSelectable(node)) {\n updateSelection(view, new NodeSelection($pos), \"pointer\");\n return true;\n }\n return false;\n}\nfunction selectClickedNode(view, inside) {\n if (inside == -1)\n return false;\n let sel = view.state.selection, selectedNode, selectAt;\n if (sel instanceof NodeSelection)\n selectedNode = sel.node;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n if (NodeSelection.isSelectable(node)) {\n if (selectedNode && sel.$from.depth > 0 &&\n i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)\n selectAt = $pos.before(sel.$from.depth);\n else\n selectAt = $pos.before(i);\n break;\n }\n }\n if (selectAt != null) {\n updateSelection(view, NodeSelection.create(view.state.doc, selectAt), \"pointer\");\n return true;\n }\n else {\n return false;\n }\n}\nfunction handleSingleClick(view, pos, inside, event, selectNode) {\n return runHandlerOnContext(view, \"handleClickOn\", pos, inside, event) ||\n view.someProp(\"handleClick\", f => f(view, pos, event)) ||\n (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside));\n}\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", f => f(view, pos, event));\n}\nfunction handleTripleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleTripleClickOn\", pos, inside, event) ||\n view.someProp(\"handleTripleClick\", f => f(view, pos, event)) ||\n defaultTripleClick(view, inside, event);\n}\nfunction defaultTripleClick(view, inside, event) {\n if (event.button != 0)\n return false;\n let doc = view.state.doc;\n if (inside == -1) {\n if (doc.inlineContent) {\n updateSelection(view, TextSelection.create(doc, 0, doc.content.size), \"pointer\");\n return true;\n }\n return false;\n }\n let $pos = doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n let nodePos = $pos.before(i);\n if (node.inlineContent)\n updateSelection(view, TextSelection.create(doc, nodePos + 1, nodePos + 1 + node.content.size), \"pointer\");\n else if (NodeSelection.isSelectable(node))\n updateSelection(view, NodeSelection.create(doc, nodePos), \"pointer\");\n else\n continue;\n return true;\n }\n}\nfunction forceDOMFlush(view) {\n return endComposition(view);\n}\nconst selectNodeModifier = mac ? \"metaKey\" : \"ctrlKey\";\nhandlers.mousedown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.shiftKey;\n let flushed = forceDOMFlush(view);\n let now = Date.now(), type = \"singleClick\";\n if (now - view.input.lastClick.time < 500 && isNear(event, view.input.lastClick) && !event[selectNodeModifier]) {\n if (view.input.lastClick.type == \"singleClick\")\n type = \"doubleClick\";\n else if (view.input.lastClick.type == \"doubleClick\")\n type = \"tripleClick\";\n }\n view.input.lastClick = { time: now, x: event.clientX, y: event.clientY, type };\n let pos = view.posAtCoords(eventCoords(event));\n if (!pos)\n return;\n if (type == \"singleClick\") {\n if (view.input.mouseDown)\n view.input.mouseDown.done();\n view.input.mouseDown = new MouseDown(view, pos, event, !!flushed);\n }\n else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"pointer\");\n }\n};\nclass MouseDown {\n constructor(view, pos, event, flushed) {\n this.view = view;\n this.pos = pos;\n this.event = event;\n this.flushed = flushed;\n this.delayedSelectionSync = false;\n this.mightDrag = null;\n this.startDoc = view.state.doc;\n this.selectNode = !!event[selectNodeModifier];\n this.allowDefault = event.shiftKey;\n let targetNode, targetPos;\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside);\n targetPos = pos.inside;\n }\n else {\n let $pos = view.state.doc.resolve(pos.pos);\n targetNode = $pos.parent;\n targetPos = $pos.depth ? $pos.before() : 0;\n }\n const target = flushed ? null : event.target;\n const targetDesc = target ? view.docView.nearestDesc(target, true) : null;\n this.target = targetDesc ? targetDesc.dom : null;\n let { selection } = view.state;\n if (event.button == 0 &&\n targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n selection instanceof NodeSelection && selection.from <= targetPos && selection.to > targetPos)\n this.mightDrag = {\n node: targetNode,\n pos: targetPos,\n addAttr: !!(this.target && !this.target.draggable),\n setUneditable: !!(this.target && gecko && !this.target.hasAttribute(\"contentEditable\"))\n };\n if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.draggable = true;\n if (this.mightDrag.setUneditable)\n setTimeout(() => {\n if (this.view.input.mouseDown == this)\n this.target.setAttribute(\"contentEditable\", \"false\");\n }, 20);\n this.view.domObserver.start();\n }\n view.root.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n view.root.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n setSelectionOrigin(view, \"pointer\");\n }\n done() {\n this.view.root.removeEventListener(\"mouseup\", this.up);\n this.view.root.removeEventListener(\"mousemove\", this.move);\n if (this.mightDrag && this.target) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.removeAttribute(\"draggable\");\n if (this.mightDrag.setUneditable)\n this.target.removeAttribute(\"contentEditable\");\n this.view.domObserver.start();\n }\n if (this.delayedSelectionSync)\n setTimeout(() => selectionToDOM(this.view));\n this.view.input.mouseDown = null;\n }\n up(event) {\n this.done();\n if (!this.view.dom.contains(event.target))\n return;\n let pos = this.pos;\n if (this.view.state.doc != this.startDoc)\n pos = this.view.posAtCoords(eventCoords(event));\n this.updateAllowDefault(event);\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\");\n }\n else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault();\n }\n else if (event.button == 0 &&\n (this.flushed ||\n // Safari ignores clicks on draggable elements\n (safari && this.mightDrag && !this.mightDrag.node.isAtom) ||\n // Chrome will sometimes treat a node selection as a\n // cursor, but still report that the node is selected\n // when asked through getSelection. You'll then get a\n // situation where clicking at the point where that\n // (hidden) cursor is doesn't change the selection, and\n // thus doesn't get a reaction from ProseMirror. This\n // works around that.\n (chrome && !this.view.state.selection.visible &&\n Math.min(Math.abs(pos.pos - this.view.state.selection.from), Math.abs(pos.pos - this.view.state.selection.to)) <= 2))) {\n updateSelection(this.view, Selection.near(this.view.state.doc.resolve(pos.pos)), \"pointer\");\n event.preventDefault();\n }\n else {\n setSelectionOrigin(this.view, \"pointer\");\n }\n }\n move(event) {\n this.updateAllowDefault(event);\n setSelectionOrigin(this.view, \"pointer\");\n if (event.buttons == 0)\n this.done();\n }\n updateAllowDefault(event) {\n if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 ||\n Math.abs(this.event.y - event.clientY) > 4))\n this.allowDefault = true;\n }\n}\nhandlers.touchstart = view => {\n view.input.lastTouch = Date.now();\n forceDOMFlush(view);\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.touchmove = view => {\n view.input.lastTouch = Date.now();\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.contextmenu = view => forceDOMFlush(view);\nfunction inOrNearComposition(view, event) {\n if (view.composing)\n return true;\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On Japanese input method editors (IMEs), the Enter key is used to confirm character\n // selection. On Safari, when Enter is pressed, compositionend and keydown events are\n // emitted. The keydown event triggers newline insertion, which we don't want.\n // This method returns true if the keydown event should be ignored.\n // We only ignore it once, as pressing Enter a second time *should* insert a newline.\n // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.\n // This guards against the case where compositionend is triggered without the keyboard\n // (e.g. character confirmation may be done with the mouse), and keydown is triggered\n // afterwards- we wouldn't want to ignore the keydown event in this case.\n if (safari && Math.abs(event.timeStamp - view.input.compositionEndedAt) < 500) {\n view.input.compositionEndedAt = -2e8;\n return true;\n }\n return false;\n}\n// Drop active composition after 5 seconds of inactivity on Android\nconst timeoutComposition = android ? 5000 : -1;\neditHandlers.compositionstart = editHandlers.compositionupdate = view => {\n if (!view.composing) {\n view.domObserver.flush();\n let { state } = view, $pos = state.selection.$from;\n if (state.selection.empty &&\n (state.storedMarks ||\n (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(m => m.type.spec.inclusive === false)))) {\n // Need to wrap the cursor in mark nodes different from the ones in the DOM context\n view.markCursor = view.state.storedMarks || $pos.marks();\n endComposition(view, true);\n view.markCursor = null;\n }\n else {\n endComposition(view);\n // In firefox, if the cursor is after but outside a marked node,\n // the inserted text won't inherit the marks. So this moves it\n // inside if necessary.\n if (gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n let sel = view.domSelectionRange();\n for (let node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {\n let before = offset < 0 ? node.lastChild : node.childNodes[offset - 1];\n if (!before)\n break;\n if (before.nodeType == 3) {\n view.domSelection().collapse(before, before.nodeValue.length);\n break;\n }\n else {\n node = before;\n offset = -1;\n }\n }\n }\n }\n view.input.composing = true;\n }\n scheduleComposeEnd(view, timeoutComposition);\n};\neditHandlers.compositionend = (view, event) => {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = event.timeStamp;\n view.input.compositionPendingChanges = view.domObserver.pendingRecords().length ? view.input.compositionID : 0;\n if (view.input.compositionPendingChanges)\n Promise.resolve().then(() => view.domObserver.flush());\n view.input.compositionID++;\n scheduleComposeEnd(view, 20);\n }\n};\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.input.composingTimeout);\n if (delay > -1)\n view.input.composingTimeout = setTimeout(() => endComposition(view), delay);\n}\nfunction clearComposition(view) {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = timestampFromCustomEvent();\n }\n while (view.input.compositionNodes.length > 0)\n view.input.compositionNodes.pop().markParentsDirty();\n}\nfunction timestampFromCustomEvent() {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"event\", true, true);\n return event.timeStamp;\n}\n/**\n@internal\n*/\nfunction endComposition(view, forceUpdate = false) {\n if (android && view.domObserver.flushingSoon >= 0)\n return;\n view.domObserver.forceFlush();\n clearComposition(view);\n if (forceUpdate || view.docView && view.docView.dirty) {\n let sel = selectionFromDOM(view);\n if (sel && !sel.eq(view.state.selection))\n view.dispatch(view.state.tr.setSelection(sel));\n else\n view.updateState(view.state);\n return true;\n }\n return false;\n}\nfunction captureCopy(view, dom) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n if (!view.dom.parentNode)\n return;\n let wrap = view.dom.parentNode.appendChild(document.createElement(\"div\"));\n wrap.appendChild(dom);\n wrap.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n let sel = getSelection(), range = document.createRange();\n range.selectNodeContents(dom);\n // Done because IE will fire a selectionchange moving the selection\n // to its start when removeAllRanges is called and the editor still\n // has focus (which will mess up the editor's selection state).\n view.dom.blur();\n sel.removeAllRanges();\n sel.addRange(range);\n setTimeout(() => {\n if (wrap.parentNode)\n wrap.parentNode.removeChild(wrap);\n view.focus();\n }, 50);\n}\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nconst brokenClipboardAPI = (ie && ie_version < 15) ||\n (ios && webkit_version < 604);\nhandlers.copy = editHandlers.cut = (view, _event) => {\n let event = _event;\n let sel = view.state.selection, cut = event.type == \"cut\";\n if (sel.empty)\n return;\n // IE and Edge's clipboard interface is completely broken\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let slice = sel.content(), { dom, text } = serializeForClipboard(view, slice);\n if (data) {\n event.preventDefault();\n data.clearData();\n data.setData(\"text/html\", dom.innerHTML);\n data.setData(\"text/plain\", text);\n }\n else {\n captureCopy(view, dom);\n }\n if (cut)\n view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\"));\n};\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null;\n}\nfunction capturePaste(view, event) {\n if (!view.dom.parentNode)\n return;\n let plainText = view.input.shiftKey || view.state.selection.$from.parent.type.spec.code;\n let target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"));\n if (!plainText)\n target.contentEditable = \"true\";\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n setTimeout(() => {\n view.focus();\n if (target.parentNode)\n target.parentNode.removeChild(target);\n if (plainText)\n doPaste(view, target.value, null, plain, event);\n else\n doPaste(view, target.textContent, target.innerHTML, plain, event);\n }, 50);\n}\nfunction doPaste(view, text, html, preferPlain, event) {\n let slice = parseFromClipboard(view, text, html, preferPlain, view.state.selection.$from);\n if (view.someProp(\"handlePaste\", f => f(view, event, slice || Slice.empty)))\n return true;\n if (!slice)\n return false;\n let singleNode = sliceSingleNode(slice);\n let tr = singleNode\n ? view.state.tr.replaceSelectionWith(singleNode, preferPlain)\n : view.state.tr.replaceSelection(slice);\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"));\n return true;\n}\nfunction getText(clipboardData) {\n let text = clipboardData.getData(\"text/plain\") || clipboardData.getData(\"Text\");\n if (text)\n return text;\n let uris = clipboardData.getData(\"text/uri-list\");\n return uris ? uris.replace(/\\r?\\n/g, \" \") : \"\";\n}\neditHandlers.paste = (view, _event) => {\n let event = _event;\n // Handling paste from JavaScript during composition is very poorly\n // handled by browsers, so as a dodgy but preferable kludge, we just\n // let the browser do its native thing there, except on Android,\n // where the editor is almost always composing.\n if (view.composing && !android)\n return;\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n if (data && doPaste(view, getText(data), data.getData(\"text/html\"), plain, event))\n event.preventDefault();\n else\n capturePaste(view, event);\n};\nclass Dragging {\n constructor(slice, move, node) {\n this.slice = slice;\n this.move = move;\n this.node = node;\n }\n}\nconst dragCopyModifier = mac ? \"altKey\" : \"ctrlKey\";\nhandlers.dragstart = (view, _event) => {\n let event = _event;\n let mouseDown = view.input.mouseDown;\n if (mouseDown)\n mouseDown.done();\n if (!event.dataTransfer)\n return;\n let sel = view.state.selection;\n let pos = sel.empty ? null : view.posAtCoords(eventCoords(event));\n let node;\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1 : sel.to)) ;\n else if (mouseDown && mouseDown.mightDrag) {\n node = NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos);\n }\n else if (event.target && event.target.nodeType == 1) {\n let desc = view.docView.nearestDesc(event.target, true);\n if (desc && desc.node.type.spec.draggable && desc != view.docView)\n node = NodeSelection.create(view.state.doc, desc.posBefore);\n }\n let slice = (node || view.state.selection).content(), { dom, text } = serializeForClipboard(view, slice);\n event.dataTransfer.clearData();\n event.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML);\n // See https://github.com/ProseMirror/prosemirror/issues/1156\n event.dataTransfer.effectAllowed = \"copyMove\";\n if (!brokenClipboardAPI)\n event.dataTransfer.setData(\"text/plain\", text);\n view.dragging = new Dragging(slice, !event[dragCopyModifier], node);\n};\nhandlers.dragend = view => {\n let dragging = view.dragging;\n window.setTimeout(() => {\n if (view.dragging == dragging)\n view.dragging = null;\n }, 50);\n};\neditHandlers.dragover = editHandlers.dragenter = (_, e) => e.preventDefault();\neditHandlers.drop = (view, _event) => {\n let event = _event;\n let dragging = view.dragging;\n view.dragging = null;\n if (!event.dataTransfer)\n return;\n let eventPos = view.posAtCoords(eventCoords(event));\n if (!eventPos)\n return;\n let $mouse = view.state.doc.resolve(eventPos.pos);\n let slice = dragging && dragging.slice;\n if (slice) {\n view.someProp(\"transformPasted\", f => { slice = f(slice, view); });\n }\n else {\n slice = parseFromClipboard(view, getText(event.dataTransfer), brokenClipboardAPI ? null : event.dataTransfer.getData(\"text/html\"), false, $mouse);\n }\n let move = !!(dragging && !event[dragCopyModifier]);\n if (view.someProp(\"handleDrop\", f => f(view, event, slice || Slice.empty, move))) {\n event.preventDefault();\n return;\n }\n if (!slice)\n return;\n event.preventDefault();\n let insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos;\n if (insertPos == null)\n insertPos = $mouse.pos;\n let tr = view.state.tr;\n if (move) {\n let { node } = dragging;\n if (node)\n node.replace(tr);\n else\n tr.deleteSelection();\n }\n let pos = tr.mapping.map(insertPos);\n let isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1;\n let beforeInsert = tr.doc;\n if (isNode)\n tr.replaceRangeWith(pos, pos, slice.content.firstChild);\n else\n tr.replaceRange(pos, pos, slice);\n if (tr.doc.eq(beforeInsert))\n return;\n let $pos = tr.doc.resolve(pos);\n if (isNode && NodeSelection.isSelectable(slice.content.firstChild) &&\n $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild)) {\n tr.setSelection(new NodeSelection($pos));\n }\n else {\n let end = tr.mapping.map(insertPos);\n tr.mapping.maps[tr.mapping.maps.length - 1].forEach((_from, _to, _newFrom, newTo) => end = newTo);\n tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));\n }\n view.focus();\n view.dispatch(tr.setMeta(\"uiEvent\", \"drop\"));\n};\nhandlers.focus = view => {\n view.input.lastFocus = Date.now();\n if (!view.focused) {\n view.domObserver.stop();\n view.dom.classList.add(\"ProseMirror-focused\");\n view.domObserver.start();\n view.focused = true;\n setTimeout(() => {\n if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.domSelectionRange()))\n selectionToDOM(view);\n }, 20);\n }\n};\nhandlers.blur = (view, _event) => {\n let event = _event;\n if (view.focused) {\n view.domObserver.stop();\n view.dom.classList.remove(\"ProseMirror-focused\");\n view.domObserver.start();\n if (event.relatedTarget && view.dom.contains(event.relatedTarget))\n view.domObserver.currentSelection.clear();\n view.focused = false;\n }\n};\nhandlers.beforeinput = (view, _event) => {\n let event = _event;\n // We should probably do more with beforeinput events, but support\n // is so spotty that I'm still waiting to see where they are going.\n // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (chrome && android && event.inputType == \"deleteContentBackward\") {\n view.domObserver.flushSoon();\n let { domChangeCount } = view.input;\n setTimeout(() => {\n if (view.input.domChangeCount != domChangeCount)\n return; // Event already had some effect\n // This bug tends to close the virtual keyboard, so we refocus\n view.dom.blur();\n view.focus();\n if (view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\"))))\n return;\n let { $cursor } = view.state.selection;\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0)\n view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView());\n }, 50);\n }\n};\n// Make sure all handlers get registered\nfor (let prop in editHandlers)\n handlers[prop] = editHandlers[prop];\n\nfunction compareObjs(a, b) {\n if (a == b)\n return true;\n for (let p in a)\n if (a[p] !== b[p])\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n return true;\n}\nclass WidgetType {\n constructor(toDOM, spec) {\n this.toDOM = toDOM;\n this.spec = spec || noSpec;\n this.side = this.spec.side || 0;\n }\n map(mapping, span, offset, oldOffset) {\n let { pos, deleted } = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1);\n return deleted ? null : new Decoration(pos - offset, pos - offset, this);\n }\n valid() { return true; }\n eq(other) {\n return this == other ||\n (other instanceof WidgetType &&\n (this.spec.key && this.spec.key == other.spec.key ||\n this.toDOM == other.toDOM && compareObjs(this.spec, other.spec)));\n }\n destroy(node) {\n if (this.spec.destroy)\n this.spec.destroy(node);\n }\n}\nclass InlineType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset;\n let to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset;\n return from >= to ? null : new Decoration(from, to, this);\n }\n valid(_, span) { return span.from < span.to; }\n eq(other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n static is(span) { return span.type instanceof InlineType; }\n destroy() { }\n}\nclass NodeType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.mapResult(span.from + oldOffset, 1);\n if (from.deleted)\n return null;\n let to = mapping.mapResult(span.to + oldOffset, -1);\n if (to.deleted || to.pos <= from.pos)\n return null;\n return new Decoration(from.pos - offset, to.pos - offset, this);\n }\n valid(node, span) {\n let { index, offset } = node.content.findIndex(span.from), child;\n return offset == span.from && !(child = node.child(index)).isText && offset + child.nodeSize == span.to;\n }\n eq(other) {\n return this == other ||\n (other instanceof NodeType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n destroy() { }\n}\n/**\nDecoration objects can be provided to the view through the\n[`decorations` prop](https://prosemirror.net/docs/ref/#view.EditorProps.decorations). They come in\nseveral variants—see the static members of this class for details.\n*/\nclass Decoration {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the decoration.\n */\n from, \n /**\n The end position. Will be the same as `from` for [widget\n decorations](https://prosemirror.net/docs/ref/#view.Decoration^widget).\n */\n to, \n /**\n @internal\n */\n type) {\n this.from = from;\n this.to = to;\n this.type = type;\n }\n /**\n @internal\n */\n copy(from, to) {\n return new Decoration(from, to, this.type);\n }\n /**\n @internal\n */\n eq(other, offset = 0) {\n return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to;\n }\n /**\n @internal\n */\n map(mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset);\n }\n /**\n Creates a widget decoration, which is a DOM node that's shown in\n the document at the given position. It is recommended that you\n delay rendering the widget by passing a function that will be\n called when the widget is actually drawn in a view, but you can\n also directly pass a DOM node. `getPos` can be used to find the\n widget's current document position.\n */\n static widget(pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec));\n }\n /**\n Creates an inline decoration, which adds the given attributes to\n each inline node between `from` and `to`.\n */\n static inline(from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec));\n }\n /**\n Creates a node decoration. `from` and `to` should point precisely\n before and after a node in the document. That node, and only that\n node, will receive the given attributes.\n */\n static node(from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec));\n }\n /**\n The spec provided when creating this decoration. Can be useful\n if you've stored extra information in that object.\n */\n get spec() { return this.type.spec; }\n /**\n @internal\n */\n get inline() { return this.type instanceof InlineType; }\n /**\n @internal\n */\n get widget() { return this.type instanceof WidgetType; }\n}\nconst none = [], noSpec = {};\n/**\nA collection of [decorations](https://prosemirror.net/docs/ref/#view.Decoration), organized in such\na way that the drawing algorithm can efficiently use and compare\nthem. This is a persistent data structure—it is not modified,\nupdates create a new value.\n*/\nclass DecorationSet {\n /**\n @internal\n */\n constructor(local, children) {\n this.local = local.length ? local : none;\n this.children = children.length ? children : none;\n }\n /**\n Create a set of decorations, using the structure of the given\n document. This will consume (modify) the `decorations` array, so\n you must make a copy if you want need to preserve that.\n */\n static create(doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty;\n }\n /**\n Find all decorations in this set which touch the given range\n (including decorations that start or end directly at the\n boundaries) and match the given predicate on their spec. When\n `start` and `end` are omitted, all decorations in the set are\n considered. When `predicate` isn't given, all decorations are\n assumed to match.\n */\n find(start, end, predicate) {\n let result = [];\n this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate);\n return result;\n }\n findInner(start, end, result, offset, predicate) {\n for (let i = 0; i < this.local.length; i++) {\n let span = this.local[i];\n if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))\n result.push(span.copy(span.from + offset, span.to + offset));\n }\n for (let i = 0; i < this.children.length; i += 3) {\n if (this.children[i] < end && this.children[i + 1] > start) {\n let childOff = this.children[i] + 1;\n this.children[i + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate);\n }\n }\n }\n /**\n Map the set of decorations in response to a change in the\n document.\n */\n map(mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0)\n return this;\n return this.mapInner(mapping, doc, 0, 0, options || noSpec);\n }\n /**\n @internal\n */\n mapInner(mapping, node, offset, oldOffset, options) {\n let newLocal;\n for (let i = 0; i < this.local.length; i++) {\n let mapped = this.local[i].map(mapping, offset, oldOffset);\n if (mapped && mapped.type.valid(node, mapped))\n (newLocal || (newLocal = [])).push(mapped);\n else if (options.onRemove)\n options.onRemove(this.local[i].spec);\n }\n if (this.children.length)\n return mapChildren(this.children, newLocal || [], mapping, node, offset, oldOffset, options);\n else\n return newLocal ? new DecorationSet(newLocal.sort(byPos), none) : empty;\n }\n /**\n Add the given array of decorations to the ones in the set,\n producing a new set. Consumes the `decorations` array. Needs\n access to the current document to create the appropriate tree\n structure.\n */\n add(doc, decorations) {\n if (!decorations.length)\n return this;\n if (this == empty)\n return DecorationSet.create(doc, decorations);\n return this.addInner(doc, decorations, 0);\n }\n addInner(doc, decorations, offset) {\n let children, childIndex = 0;\n doc.forEach((childNode, childOffset) => {\n let baseOffset = childOffset + offset, found;\n if (!(found = takeSpansForNode(decorations, childNode, baseOffset)))\n return;\n if (!children)\n children = this.children.slice();\n while (childIndex < children.length && children[childIndex] < childOffset)\n childIndex += 3;\n if (children[childIndex] == childOffset)\n children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1);\n else\n children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec));\n childIndex += 3;\n });\n let local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);\n for (let i = 0; i < local.length; i++)\n if (!local[i].type.valid(doc, local[i]))\n local.splice(i--, 1);\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local, children || this.children);\n }\n /**\n Create a new set that contains the decorations in this set, minus\n the ones in the given array.\n */\n remove(decorations) {\n if (decorations.length == 0 || this == empty)\n return this;\n return this.removeInner(decorations, 0);\n }\n removeInner(decorations, offset) {\n let children = this.children, local = this.local;\n for (let i = 0; i < children.length; i += 3) {\n let found;\n let from = children[i] + offset, to = children[i + 1] + offset;\n for (let j = 0, span; j < decorations.length; j++)\n if (span = decorations[j]) {\n if (span.from > from && span.to < to) {\n decorations[j] = null;\n (found || (found = [])).push(span);\n }\n }\n if (!found)\n continue;\n if (children == this.children)\n children = this.children.slice();\n let removed = children[i + 2].removeInner(found, from + 1);\n if (removed != empty) {\n children[i + 2] = removed;\n }\n else {\n children.splice(i, 3);\n i -= 3;\n }\n }\n if (local.length)\n for (let i = 0, span; i < decorations.length; i++)\n if (span = decorations[i]) {\n for (let j = 0; j < local.length; j++)\n if (local[j].eq(span, offset)) {\n if (local == this.local)\n local = this.local.slice();\n local.splice(j--, 1);\n }\n }\n if (children == this.children && local == this.local)\n return this;\n return local.length || children.length ? new DecorationSet(local, children) : empty;\n }\n /**\n @internal\n */\n forChild(offset, node) {\n if (this == empty)\n return this;\n if (node.isLeaf)\n return DecorationSet.empty;\n let child, local;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] >= offset) {\n if (this.children[i] == offset)\n child = this.children[i + 2];\n break;\n }\n let start = offset + 1, end = start + node.content.size;\n for (let i = 0; i < this.local.length; i++) {\n let dec = this.local[i];\n if (dec.from < end && dec.to > start && (dec.type instanceof InlineType)) {\n let from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start;\n if (from < to)\n (local || (local = [])).push(dec.copy(from, to));\n }\n }\n if (local) {\n let localSet = new DecorationSet(local.sort(byPos), none);\n return child ? new DecorationGroup([localSet, child]) : localSet;\n }\n return child || empty;\n }\n /**\n @internal\n */\n eq(other) {\n if (this == other)\n return true;\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length)\n return false;\n for (let i = 0; i < this.local.length; i++)\n if (!this.local[i].eq(other.local[i]))\n return false;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] != other.children[i] ||\n this.children[i + 1] != other.children[i + 1] ||\n !this.children[i + 2].eq(other.children[i + 2]))\n return false;\n return true;\n }\n /**\n @internal\n */\n locals(node) {\n return removeOverlap(this.localsInner(node));\n }\n /**\n @internal\n */\n localsInner(node) {\n if (this == empty)\n return none;\n if (node.inlineContent || !this.local.some(InlineType.is))\n return this.local;\n let result = [];\n for (let i = 0; i < this.local.length; i++) {\n if (!(this.local[i].type instanceof InlineType))\n result.push(this.local[i]);\n }\n return result;\n }\n}\n/**\nThe empty set of decorations.\n*/\nDecorationSet.empty = new DecorationSet([], []);\n/**\n@internal\n*/\nDecorationSet.removeOverlap = removeOverlap;\nconst empty = DecorationSet.empty;\n// An abstraction that allows the code dealing with decorations to\n// treat multiple DecorationSet objects as if it were a single object\n// with (a subset of) the same interface.\nclass DecorationGroup {\n constructor(members) {\n this.members = members;\n }\n map(mapping, doc) {\n const mappedDecos = this.members.map(member => member.map(mapping, doc, noSpec));\n return DecorationGroup.from(mappedDecos);\n }\n forChild(offset, child) {\n if (child.isLeaf)\n return DecorationSet.empty;\n let found = [];\n for (let i = 0; i < this.members.length; i++) {\n let result = this.members[i].forChild(offset, child);\n if (result == empty)\n continue;\n if (result instanceof DecorationGroup)\n found = found.concat(result.members);\n else\n found.push(result);\n }\n return DecorationGroup.from(found);\n }\n eq(other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length)\n return false;\n for (let i = 0; i < this.members.length; i++)\n if (!this.members[i].eq(other.members[i]))\n return false;\n return true;\n }\n locals(node) {\n let result, sorted = true;\n for (let i = 0; i < this.members.length; i++) {\n let locals = this.members[i].localsInner(node);\n if (!locals.length)\n continue;\n if (!result) {\n result = locals;\n }\n else {\n if (sorted) {\n result = result.slice();\n sorted = false;\n }\n for (let j = 0; j < locals.length; j++)\n result.push(locals[j]);\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none;\n }\n // Create a group for the given array of decoration sets, or return\n // a single set when possible.\n static from(members) {\n switch (members.length) {\n case 0: return empty;\n case 1: return members[0];\n default: return new DecorationGroup(members.every(m => m instanceof DecorationSet) ? members :\n members.reduce((r, m) => r.concat(m instanceof DecorationSet ? m : m.members), []));\n }\n }\n}\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n let children = oldChildren.slice();\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n for (let i = 0, baseOffset = oldOffset; i < mapping.maps.length; i++) {\n let moved = 0;\n mapping.maps[i].forEach((oldStart, oldEnd, newStart, newEnd) => {\n let dSize = (newEnd - newStart) - (oldEnd - oldStart);\n for (let i = 0; i < children.length; i += 3) {\n let end = children[i + 1];\n if (end < 0 || oldStart > end + baseOffset - moved)\n continue;\n let start = children[i] + baseOffset - moved;\n if (oldEnd >= start) {\n children[i + 1] = oldStart <= start ? -2 : -1;\n }\n else if (oldStart >= baseOffset && dSize) {\n children[i] += dSize;\n children[i + 1] += dSize;\n }\n }\n moved += dSize;\n });\n baseOffset = mapping.maps[i].map(baseOffset, -1);\n }\n // Find the child nodes that still correspond to a single node,\n // recursively call mapInner on them and update their positions.\n let mustRebuild = false;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) { // Touched nodes\n if (children[i + 1] == -2) {\n mustRebuild = true;\n children[i + 1] = -1;\n continue;\n }\n let from = mapping.map(oldChildren[i] + oldOffset), fromLocal = from - offset;\n if (fromLocal < 0 || fromLocal >= node.content.size) {\n mustRebuild = true;\n continue;\n }\n // Must read oldChildren because children was tagged with -1\n let to = mapping.map(oldChildren[i + 1] + oldOffset, -1), toLocal = to - offset;\n let { index, offset: childOffset } = node.content.findIndex(fromLocal);\n let childNode = node.maybeChild(index);\n if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {\n let mapped = children[i + 2]\n .mapInner(mapping, childNode, from + 1, oldChildren[i] + oldOffset + 1, options);\n if (mapped != empty) {\n children[i] = fromLocal;\n children[i + 1] = toLocal;\n children[i + 2] = mapped;\n }\n else {\n children[i + 1] = -2;\n mustRebuild = true;\n }\n }\n else {\n mustRebuild = true;\n }\n }\n // Remaining children must be collected and rebuilt into the appropriate structure\n if (mustRebuild) {\n let decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal, mapping, offset, oldOffset, options);\n let built = buildTree(decorations, node, 0, options);\n newLocal = built.local;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) {\n children.splice(i, 3);\n i -= 3;\n }\n for (let i = 0, j = 0; i < built.children.length; i += 3) {\n let from = built.children[i];\n while (j < children.length && children[j] < from)\n j += 3;\n children.splice(j, 0, built.children[i], built.children[i + 1], built.children[i + 2]);\n }\n }\n return new DecorationSet(newLocal.sort(byPos), children);\n}\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length)\n return spans;\n let result = [];\n for (let i = 0; i < spans.length; i++) {\n let span = spans[i];\n result.push(new Decoration(span.from + offset, span.to + offset, span.type));\n }\n return result;\n}\nfunction mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {\n // Gather all decorations from the remaining marked children\n function gather(set, oldOffset) {\n for (let i = 0; i < set.local.length; i++) {\n let mapped = set.local[i].map(mapping, offset, oldOffset);\n if (mapped)\n decorations.push(mapped);\n else if (options.onRemove)\n options.onRemove(set.local[i].spec);\n }\n for (let i = 0; i < set.children.length; i += 3)\n gather(set.children[i + 2], set.children[i] + oldOffset + 1);\n }\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] == -1)\n gather(children[i + 2], oldChildren[i] + oldOffset + 1);\n return decorations;\n}\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf)\n return null;\n let end = offset + node.nodeSize, found = null;\n for (let i = 0, span; i < spans.length; i++) {\n if ((span = spans[i]) && span.from > offset && span.to < end) {\n (found || (found = [])).push(span);\n spans[i] = null;\n }\n }\n return found;\n}\nfunction withoutNulls(array) {\n let result = [];\n for (let i = 0; i < array.length; i++)\n if (array[i] != null)\n result.push(array[i]);\n return result;\n}\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtracted from the `from` and `to`\n// positions in the spans (so that we don't have to allocate new spans\n// for recursive calls).\nfunction buildTree(spans, node, offset, options) {\n let children = [], hasNulls = false;\n node.forEach((childNode, localStart) => {\n let found = takeSpansForNode(spans, childNode, localStart + offset);\n if (found) {\n hasNulls = true;\n let subtree = buildTree(found, childNode, offset + localStart + 1, options);\n if (subtree != empty)\n children.push(localStart, localStart + childNode.nodeSize, subtree);\n }\n });\n let locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos);\n for (let i = 0; i < locals.length; i++)\n if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove)\n options.onRemove(locals[i].spec);\n locals.splice(i--, 1);\n }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty;\n}\n// Used to sort decorations so that ones with a low start position\n// come first, and within a set with the same start position, those\n// with an smaller end position come first.\nfunction byPos(a, b) {\n return a.from - b.from || a.to - b.to;\n}\n// Scan a sorted array of decorations for partially overlapping spans,\n// and split those so that only fully overlapping spans are left (to\n// make subsequent rendering easier). Will return the input array if\n// no partially overlapping spans are found (the common case).\nfunction removeOverlap(spans) {\n let working = spans;\n for (let i = 0; i < working.length - 1; i++) {\n let span = working[i];\n if (span.from != span.to)\n for (let j = i + 1; j < working.length; j++) {\n let next = working[j];\n if (next.from == span.from) {\n if (next.to != span.to) {\n if (working == spans)\n working = spans.slice();\n // Followed by a partially overlapping larger span. Split that\n // span.\n working[j] = next.copy(next.from, span.to);\n insertAhead(working, j + 1, next.copy(span.to, next.to));\n }\n continue;\n }\n else {\n if (next.from < span.to) {\n if (working == spans)\n working = spans.slice();\n // The end of this one overlaps with a subsequent span. Split\n // this one.\n working[i] = span.copy(span.from, next.from);\n insertAhead(working, j, span.copy(next.from, span.to));\n }\n break;\n }\n }\n }\n return working;\n}\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0)\n i++;\n array.splice(i, 0, deco);\n}\n// Get the decorations associated with the current props of a view.\nfunction viewDecorations(view) {\n let found = [];\n view.someProp(\"decorations\", f => {\n let result = f(view.state);\n if (result && result != empty)\n found.push(result);\n });\n if (view.cursorWrapper)\n found.push(DecorationSet.create(view.state.doc, [view.cursorWrapper.deco]));\n return DecorationGroup.from(found);\n}\n\nconst observeOptions = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n attributes: true,\n attributeOldValue: true,\n subtree: true\n};\n// IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\nconst useCharData = ie && ie_version <= 11;\nclass SelectionState {\n constructor() {\n this.anchorNode = null;\n this.anchorOffset = 0;\n this.focusNode = null;\n this.focusOffset = 0;\n }\n set(sel) {\n this.anchorNode = sel.anchorNode;\n this.anchorOffset = sel.anchorOffset;\n this.focusNode = sel.focusNode;\n this.focusOffset = sel.focusOffset;\n }\n clear() {\n this.anchorNode = this.focusNode = null;\n }\n eq(sel) {\n return sel.anchorNode == this.anchorNode && sel.anchorOffset == this.anchorOffset &&\n sel.focusNode == this.focusNode && sel.focusOffset == this.focusOffset;\n }\n}\nclass DOMObserver {\n constructor(view, handleDOMChange) {\n this.view = view;\n this.handleDOMChange = handleDOMChange;\n this.queue = [];\n this.flushingSoon = -1;\n this.observer = null;\n this.currentSelection = new SelectionState;\n this.onCharData = null;\n this.suppressingSelectionUpdates = false;\n this.observer = window.MutationObserver &&\n new window.MutationObserver(mutations => {\n for (let i = 0; i < mutations.length; i++)\n this.queue.push(mutations[i]);\n // IE11 will sometimes (on backspacing out a single character\n // text node after a BR node) call the observer callback\n // before actually updating the DOM, which will cause\n // ProseMirror to miss the change (see #930)\n if (ie && ie_version <= 11 && mutations.some(m => m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length))\n this.flushSoon();\n else\n this.flush();\n });\n if (useCharData) {\n this.onCharData = e => {\n this.queue.push({ target: e.target, type: \"characterData\", oldValue: e.prevValue });\n this.flushSoon();\n };\n }\n this.onSelectionChange = this.onSelectionChange.bind(this);\n }\n flushSoon() {\n if (this.flushingSoon < 0)\n this.flushingSoon = window.setTimeout(() => { this.flushingSoon = -1; this.flush(); }, 20);\n }\n forceFlush() {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon);\n this.flushingSoon = -1;\n this.flush();\n }\n }\n start() {\n if (this.observer) {\n this.observer.takeRecords();\n this.observer.observe(this.view.dom, observeOptions);\n }\n if (this.onCharData)\n this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.connectSelection();\n }\n stop() {\n if (this.observer) {\n let take = this.observer.takeRecords();\n if (take.length) {\n for (let i = 0; i < take.length; i++)\n this.queue.push(take[i]);\n window.setTimeout(() => this.flush(), 20);\n }\n this.observer.disconnect();\n }\n if (this.onCharData)\n this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.disconnectSelection();\n }\n connectSelection() {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange);\n }\n disconnectSelection() {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange);\n }\n suppressSelectionUpdates() {\n this.suppressingSelectionUpdates = true;\n setTimeout(() => this.suppressingSelectionUpdates = false, 50);\n }\n onSelectionChange() {\n if (!hasFocusAndSelection(this.view))\n return;\n if (this.suppressingSelectionUpdates)\n return selectionToDOM(this.view);\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n if (ie && ie_version <= 11 && !this.view.state.selection.empty) {\n let sel = this.view.domSelectionRange();\n // Selection.isCollapsed isn't reliable on IE\n if (sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n return this.flushSoon();\n }\n this.flush();\n }\n setCurSelection() {\n this.currentSelection.set(this.view.domSelectionRange());\n }\n ignoreSelectionChange(sel) {\n if (!sel.focusNode)\n return true;\n let ancestors = new Set, container;\n for (let scan = sel.focusNode; scan; scan = parentNode(scan))\n ancestors.add(scan);\n for (let scan = sel.anchorNode; scan; scan = parentNode(scan))\n if (ancestors.has(scan)) {\n container = scan;\n break;\n }\n let desc = container && this.view.docView.nearestDesc(container);\n if (desc && desc.ignoreMutation({\n type: \"selection\",\n target: container.nodeType == 3 ? container.parentNode : container\n })) {\n this.setCurSelection();\n return true;\n }\n }\n pendingRecords() {\n if (this.observer)\n for (let mut of this.observer.takeRecords())\n this.queue.push(mut);\n return this.queue;\n }\n flush() {\n let { view } = this;\n if (!view.docView || this.flushingSoon > -1)\n return;\n let mutations = this.pendingRecords();\n if (mutations.length)\n this.queue = [];\n let sel = view.domSelectionRange();\n let newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasFocusAndSelection(view) && !this.ignoreSelectionChange(sel);\n let from = -1, to = -1, typeOver = false, added = [];\n if (view.editable) {\n for (let i = 0; i < mutations.length; i++) {\n let result = this.registerMutation(mutations[i], added);\n if (result) {\n from = from < 0 ? result.from : Math.min(result.from, from);\n to = to < 0 ? result.to : Math.max(result.to, to);\n if (result.typeOver)\n typeOver = true;\n }\n }\n }\n if (gecko && added.length > 1) {\n let brs = added.filter(n => n.nodeName == \"BR\");\n if (brs.length == 2) {\n let a = brs[0], b = brs[1];\n if (a.parentNode && a.parentNode.parentNode == b.parentNode)\n b.remove();\n else\n a.remove();\n }\n }\n let readSel = null;\n // If it looks like the browser has reset the selection to the\n // start of the document after focus, restore the selection from\n // the state\n if (from < 0 && newSel && view.input.lastFocus > Date.now() - 200 &&\n Math.max(view.input.lastTouch, view.input.lastClick.time) < Date.now() - 300 &&\n selectionCollapsed(sel) && (readSel = selectionFromDOM(view)) &&\n readSel.eq(Selection.near(view.state.doc.resolve(0), 1))) {\n view.input.lastFocus = 0;\n selectionToDOM(view);\n this.currentSelection.set(sel);\n view.scrollToSelection();\n }\n else if (from > -1 || newSel) {\n if (from > -1) {\n view.docView.markDirty(from, to);\n checkCSS(view);\n }\n this.handleDOMChange(from, to, typeOver, added);\n if (view.docView && view.docView.dirty)\n view.updateState(view.state);\n else if (!this.currentSelection.eq(sel))\n selectionToDOM(view);\n this.currentSelection.set(sel);\n }\n }\n registerMutation(mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1)\n return null;\n let desc = this.view.docView.nearestDesc(mut.target);\n if (mut.type == \"attributes\" &&\n (desc == this.view.docView || mut.attributeName == \"contenteditable\" ||\n // Firefox sometimes fires spurious events for null/empty styles\n (mut.attributeName == \"style\" && !mut.oldValue && !mut.target.getAttribute(\"style\"))))\n return null;\n if (!desc || desc.ignoreMutation(mut))\n return null;\n if (mut.type == \"childList\") {\n for (let i = 0; i < mut.addedNodes.length; i++)\n added.push(mut.addedNodes[i]);\n if (desc.contentDOM && desc.contentDOM != desc.dom && !desc.contentDOM.contains(mut.target))\n return { from: desc.posBefore, to: desc.posAfter };\n let prev = mut.previousSibling, next = mut.nextSibling;\n if (ie && ie_version <= 11 && mut.addedNodes.length) {\n // IE11 gives us incorrect next/prev siblings for some\n // insertions, so if there are added nodes, recompute those\n for (let i = 0; i < mut.addedNodes.length; i++) {\n let { previousSibling, nextSibling } = mut.addedNodes[i];\n if (!previousSibling || Array.prototype.indexOf.call(mut.addedNodes, previousSibling) < 0)\n prev = previousSibling;\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0)\n next = nextSibling;\n }\n }\n let fromOffset = prev && prev.parentNode == mut.target\n ? domIndex(prev) + 1 : 0;\n let from = desc.localPosFromDOM(mut.target, fromOffset, -1);\n let toOffset = next && next.parentNode == mut.target\n ? domIndex(next) : mut.target.childNodes.length;\n let to = desc.localPosFromDOM(mut.target, toOffset, 1);\n return { from, to };\n }\n else if (mut.type == \"attributes\") {\n return { from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border };\n }\n else { // \"characterData\"\n return {\n from: desc.posAtStart,\n to: desc.posAtEnd,\n // An event was generated for a text change that didn't change\n // any text. Mark the dom change to fall back to assuming the\n // selection was typed over with an identical value if it can't\n // find another change.\n typeOver: mut.target.nodeValue == mut.oldValue\n };\n }\n }\n}\nlet cssChecked = new WeakMap();\nlet cssCheckWarned = false;\nfunction checkCSS(view) {\n if (cssChecked.has(view))\n return;\n cssChecked.set(view, null);\n if (['normal', 'nowrap', 'pre-line'].indexOf(getComputedStyle(view.dom).whiteSpace) !== -1) {\n view.requiresGeckoHackNode = gecko;\n if (cssCheckWarned)\n return;\n console[\"warn\"](\"ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\");\n cssCheckWarned = true;\n }\n}\n// Used to work around a Safari Selection/shadow DOM bug\n// Based on https://github.com/codemirror/dev/issues/414 fix\nfunction safariShadowSelectionRange(view) {\n let found;\n function read(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n found = event.getTargetRanges()[0];\n }\n // Because Safari (at least in 2018-2022) doesn't provide regular\n // access to the selection inside a shadowRoot, we have to perform a\n // ridiculous hack to get at it—using `execCommand` to trigger a\n // `beforeInput` event so that we can read the target range from the\n // event.\n view.dom.addEventListener(\"beforeinput\", read, true);\n document.execCommand(\"indent\");\n view.dom.removeEventListener(\"beforeinput\", read, true);\n let anchorNode = found.startContainer, anchorOffset = found.startOffset;\n let focusNode = found.endContainer, focusOffset = found.endOffset;\n let currentAnchor = view.domAtPos(view.state.selection.anchor);\n // Since such a range doesn't distinguish between anchor and head,\n // use a heuristic that flips it around if its end matches the\n // current anchor.\n if (isEquivalentPosition(currentAnchor.node, currentAnchor.offset, focusNode, focusOffset))\n [anchorNode, anchorOffset, focusNode, focusOffset] = [focusNode, focusOffset, anchorNode, anchorOffset];\n return { anchorNode, anchorOffset, focusNode, focusOffset };\n}\n\n// Note that all referencing and parsing is done with the\n// start-of-operation selection and document, since that's the one\n// that the DOM represents. If any changes came in in the meantime,\n// the modification is mapped over those before it is applied, in\n// readDOMChange.\nfunction parseBetween(view, from_, to_) {\n let { node: parent, fromOffset, toOffset, from, to } = view.docView.parseRange(from_, to_);\n let domSel = view.domSelectionRange();\n let find;\n let anchor = domSel.anchorNode;\n if (anchor && view.dom.contains(anchor.nodeType == 1 ? anchor : anchor.parentNode)) {\n find = [{ node: anchor, offset: domSel.anchorOffset }];\n if (!selectionCollapsed(domSel))\n find.push({ node: domSel.focusNode, offset: domSel.focusOffset });\n }\n // Work around issue in Chrome where backspacing sometimes replaces\n // the deleted content with a random BR node (issues #799, #831)\n if (chrome && view.input.lastKeyCode === 8) {\n for (let off = toOffset; off > fromOffset; off--) {\n let node = parent.childNodes[off - 1], desc = node.pmViewDesc;\n if (node.nodeName == \"BR\" && !desc) {\n toOffset = off;\n break;\n }\n if (!desc || desc.size)\n break;\n }\n }\n let startDoc = view.state.doc;\n let parser = view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n let $from = startDoc.resolve(from);\n let sel = null, doc = parser.parse(parent, {\n topNode: $from.parent,\n topMatch: $from.parent.contentMatchAt($from.index()),\n topOpen: true,\n from: fromOffset,\n to: toOffset,\n preserveWhitespace: $from.parent.type.whitespace == \"pre\" ? \"full\" : true,\n findPositions: find,\n ruleFromNode,\n context: $from\n });\n if (find && find[0].pos != null) {\n let anchor = find[0].pos, head = find[1] && find[1].pos;\n if (head == null)\n head = anchor;\n sel = { anchor: anchor + from, head: head + from };\n }\n return { doc, sel, from, to };\n}\nfunction ruleFromNode(dom) {\n let desc = dom.pmViewDesc;\n if (desc) {\n return desc.parseRule();\n }\n else if (dom.nodeName == \"BR\" && dom.parentNode) {\n // Safari replaces the list item or table cell with a BR\n // directly in the list node (?!) if you delete the last\n // character in a list item or table cell (#708, #862)\n if (safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n let skip = document.createElement(\"div\");\n skip.appendChild(document.createElement(\"li\"));\n return { skip };\n }\n else if (dom.parentNode.lastChild == dom || safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return { ignore: true };\n }\n }\n else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return { ignore: true };\n }\n return null;\n}\nconst isInline = /^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;\nfunction readDOMChange(view, from, to, typeOver, addedNodes) {\n let compositionID = view.input.compositionPendingChanges || (view.composing ? view.input.compositionID : 0);\n view.input.compositionPendingChanges = 0;\n if (from < 0) {\n let origin = view.input.lastSelectionTime > Date.now() - 50 ? view.input.lastSelectionOrigin : null;\n let newSel = selectionFromDOM(view, origin);\n if (newSel && !view.state.selection.eq(newSel)) {\n if (chrome && android &&\n view.input.lastKeyCode === 13 && Date.now() - 100 < view.input.lastKeyCodeTime &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\"))))\n return;\n let tr = view.state.tr.setSelection(newSel);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n else if (origin == \"key\")\n tr.scrollIntoView();\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n return;\n }\n let $before = view.state.doc.resolve(from);\n let shared = $before.sharedDepth(to);\n from = $before.before(shared + 1);\n to = view.state.doc.resolve(to).after(shared + 1);\n let sel = view.state.selection;\n let parse = parseBetween(view, from, to);\n let doc = view.state.doc, compare = doc.slice(parse.from, parse.to);\n let preferredPos, preferredSide;\n // Prefer anchoring to end when Backspace is pressed\n if (view.input.lastKeyCode === 8 && Date.now() - 100 < view.input.lastKeyCodeTime) {\n preferredPos = view.state.selection.to;\n preferredSide = \"end\";\n }\n else {\n preferredPos = view.state.selection.from;\n preferredSide = \"start\";\n }\n view.input.lastKeyCode = null;\n let change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide);\n if ((ios && view.input.lastIOSEnter > Date.now() - 225 || android) &&\n addedNodes.some(n => n.nodeType == 1 && !isInline.test(n.nodeName)) &&\n (!change || change.endA >= change.endB) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n if (!change) {\n if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&\n !view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {\n change = { start: sel.from, endA: sel.to, endB: sel.to };\n }\n else {\n if (parse.sel) {\n let sel = resolveSelection(view, view.state.doc, parse.sel);\n if (sel && !sel.eq(view.state.selection)) {\n let tr = view.state.tr.setSelection(sel);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n }\n return;\n }\n }\n // Chrome sometimes leaves the cursor before the inserted text when\n // composing after a cursor wrapper. This moves it forward.\n if (chrome && view.cursorWrapper && parse.sel && parse.sel.anchor == view.cursorWrapper.deco.from &&\n parse.sel.head == parse.sel.anchor) {\n let size = change.endB - change.start;\n parse.sel = { anchor: parse.sel.anchor + size, head: parse.sel.anchor + size };\n }\n view.input.domChangeCount++;\n // Handle the case where overwriting a selection by typing matches\n // the start or end of the selected content, creating a change\n // that's smaller than what was actually overwritten.\n if (view.state.selection.from < view.state.selection.to &&\n change.start == change.endB &&\n view.state.selection instanceof TextSelection) {\n if (change.start > view.state.selection.from && change.start <= view.state.selection.from + 2 &&\n view.state.selection.from >= parse.from) {\n change.start = view.state.selection.from;\n }\n else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2 &&\n view.state.selection.to <= parse.to) {\n change.endB += (view.state.selection.to - change.endA);\n change.endA = view.state.selection.to;\n }\n }\n // IE11 will insert a non-breaking space _ahead_ of the space after\n // the cursor space when adding a space before another space. When\n // that happened, adjust the change to cover the space instead.\n if (ie && ie_version <= 11 && change.endB == change.start + 1 &&\n change.endA == change.start && change.start > parse.from &&\n parse.doc.textBetween(change.start - parse.from - 1, change.start - parse.from + 1) == \" \\u00a0\") {\n change.start--;\n change.endA--;\n change.endB--;\n }\n let $from = parse.doc.resolveNoCache(change.start - parse.from);\n let $to = parse.doc.resolveNoCache(change.endB - parse.from);\n let $fromA = doc.resolve(change.start);\n let inlineChange = $from.sameParent($to) && $from.parent.inlineContent && $fromA.end() >= change.endA;\n let nextSel;\n // If this looks like the effect of pressing Enter (or was recorded\n // as being an iOS enter press), just dispatch an Enter key instead.\n if (((ios && view.input.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(n => n.nodeName == \"DIV\" || n.nodeName == \"P\"))) ||\n (!inlineChange && $from.pos < parse.doc.content.size && !$from.sameParent($to) &&\n (nextSel = Selection.findFrom(parse.doc.resolve($from.pos + 1), 1, true)) &&\n nextSel.head == $to.pos)) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeJoin(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\")))) {\n if (android && chrome)\n view.domObserver.suppressSelectionUpdates(); // #820\n return;\n }\n // Chrome Android will occasionally, during composition, delete the\n // entire composition and then immediately insert it again. This is\n // used to detect that situation.\n if (chrome && android && change.endB == change.start)\n view.input.lastAndroidDelete = Date.now();\n // This tries to detect Android virtual keyboard\n // enter-and-pick-suggestion action. That sometimes (see issue\n // #1059) first fires a DOM mutation, before moving the selection to\n // the newly created block. And then, because ProseMirror cleans up\n // the DOM selection, it gives up moving the selection entirely,\n // leaving the cursor in the wrong place. When that happens, we drop\n // the new paragraph from the initial change, and fire a simulated\n // enter key afterwards.\n if (android && !inlineChange && $from.start() != $to.start() && $to.parentOffset == 0 && $from.depth == $to.depth &&\n parse.sel && parse.sel.anchor == parse.sel.head && parse.sel.head == change.endA) {\n change.endB -= 2;\n $to = parse.doc.resolveNoCache(change.endB - parse.from);\n setTimeout(() => {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n }, 20);\n }\n let chFrom = change.start, chTo = change.endA;\n let tr, storedMarks, markChange;\n if (inlineChange) {\n if ($from.pos == $to.pos) { // Deletion\n // IE11 sometimes weirdly moves the DOM selection around after\n // backspacing out the first element in a textblock\n if (ie && ie_version <= 11 && $from.parentOffset == 0) {\n view.domObserver.suppressSelectionUpdates();\n setTimeout(() => selectionToDOM(view), 20);\n }\n tr = view.state.tr.delete(chFrom, chTo);\n storedMarks = doc.resolve(change.start).marksAcross(doc.resolve(change.endA));\n }\n else if ( // Adding or removing a mark\n change.endA == change.endB &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset), $fromA.parent.content.cut($fromA.parentOffset, change.endA - $fromA.start())))) {\n tr = view.state.tr;\n if (markChange.type == \"add\")\n tr.addMark(chFrom, chTo, markChange.mark);\n else\n tr.removeMark(chFrom, chTo, markChange.mark);\n }\n else if ($from.parent.child($from.index()).isText && $from.index() == $to.index() - ($to.textOffset ? 0 : 1)) {\n // Both positions in the same text node -- simply insert text\n let text = $from.parent.textBetween($from.parentOffset, $to.parentOffset);\n if (view.someProp(\"handleTextInput\", f => f(view, chFrom, chTo, text)))\n return;\n tr = view.state.tr.insertText(text, chFrom, chTo);\n }\n }\n if (!tr)\n tr = view.state.tr.replace(chFrom, chTo, parse.doc.slice(change.start - parse.from, change.endB - parse.from));\n if (parse.sel) {\n let sel = resolveSelection(view, tr.doc, parse.sel);\n // Chrome Android will sometimes, during composition, report the\n // selection in the wrong place. If it looks like that is\n // happening, don't update the selection.\n // Edge just doesn't move the cursor forward when you start typing\n // in an empty block or between br nodes.\n if (sel && !(chrome && android && view.composing && sel.empty &&\n (change.start != change.endB || view.input.lastAndroidDelete < Date.now() - 100) &&\n (sel.head == chFrom || sel.head == tr.mapping.map(chTo) - 1) ||\n ie && sel.empty && sel.head == chFrom))\n tr.setSelection(sel);\n }\n if (storedMarks)\n tr.ensureMarks(storedMarks);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr.scrollIntoView());\n}\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size)\n return null;\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head));\n}\n// Given two same-length, non-empty fragments of inline content,\n// determine whether the first could be created from the second by\n// removing or adding a single mark type.\nfunction isMarkChange(cur, prev) {\n let curMarks = cur.firstChild.marks, prevMarks = prev.firstChild.marks;\n let added = curMarks, removed = prevMarks, type, mark, update;\n for (let i = 0; i < prevMarks.length; i++)\n added = prevMarks[i].removeFromSet(added);\n for (let i = 0; i < curMarks.length; i++)\n removed = curMarks[i].removeFromSet(removed);\n if (added.length == 1 && removed.length == 0) {\n mark = added[0];\n type = \"add\";\n update = (node) => node.mark(mark.addToSet(node.marks));\n }\n else if (added.length == 0 && removed.length == 1) {\n mark = removed[0];\n type = \"remove\";\n update = (node) => node.mark(mark.removeFromSet(node.marks));\n }\n else {\n return null;\n }\n let updated = [];\n for (let i = 0; i < prev.childCount; i++)\n updated.push(update(prev.child(i)));\n if (Fragment.from(updated).eq(cur))\n return { mark, type };\n}\nfunction looksLikeJoin(old, start, end, $newStart, $newEnd) {\n if (!$newStart.parent.isTextblock ||\n // The content must have shrunk\n end - start <= $newEnd.pos - $newStart.pos ||\n // newEnd must point directly at or after the end of the block that newStart points into\n skipClosingAndOpening($newStart, true, false) < $newEnd.pos)\n return false;\n let $start = old.resolve(start);\n // Start must be at the end of a block\n if ($start.parentOffset < $start.parent.content.size || !$start.parent.isTextblock)\n return false;\n let $next = old.resolve(skipClosingAndOpening($start, true, true));\n // The next textblock must start before end and end near it\n if (!$next.parent.isTextblock || $next.pos > end ||\n skipClosingAndOpening($next, true, false) < end)\n return false;\n // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content);\n}\nfunction skipClosingAndOpening($pos, fromEnd, mayOpen) {\n let depth = $pos.depth, end = fromEnd ? $pos.end() : $pos.pos;\n while (depth > 0 && (fromEnd || $pos.indexAfter(depth) == $pos.node(depth).childCount)) {\n depth--;\n end++;\n fromEnd = false;\n }\n if (mayOpen) {\n let next = $pos.node(depth).maybeChild($pos.indexAfter(depth));\n while (next && !next.isLeaf) {\n next = next.firstChild;\n end++;\n }\n }\n return end;\n}\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n let start = a.findDiffStart(b, pos);\n if (start == null)\n return null;\n let { a: endA, b: endB } = a.findDiffEnd(b, pos + a.size, pos + b.size);\n if (preferredSide == \"end\") {\n let adjust = Math.max(0, start - Math.min(endA, endB));\n preferredPos -= endA + adjust - start;\n }\n if (endA < start && a.size < b.size) {\n let move = preferredPos <= start && preferredPos >= endA ? start - preferredPos : 0;\n start -= move;\n if (start && start < b.size && isSurrogatePair(b.textBetween(start - 1, start + 1)))\n start += move ? 1 : -1;\n endB = start + (endB - endA);\n endA = start;\n }\n else if (endB < start) {\n let move = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0;\n start -= move;\n if (start && start < a.size && isSurrogatePair(a.textBetween(start - 1, start + 1)))\n start += move ? 1 : -1;\n endA = start + (endA - endB);\n endB = start;\n }\n return { start, endA, endB };\n}\nfunction isSurrogatePair(str) {\n if (str.length != 2)\n return false;\n let a = str.charCodeAt(0), b = str.charCodeAt(1);\n return a >= 0xDC00 && a <= 0xDFFF && b >= 0xD800 && b <= 0xDBFF;\n}\n\n/**\n@internal\n*/\nconst __serializeForClipboard = serializeForClipboard;\n/**\n@internal\n*/\nconst __parseFromClipboard = parseFromClipboard;\n/**\n@internal\n*/\nconst __endComposition = endComposition;\n/**\nAn editor view manages the DOM structure that represents an\neditable document. Its state and behavior are determined by its\n[props](https://prosemirror.net/docs/ref/#view.DirectEditorProps).\n*/\nclass EditorView {\n /**\n Create a view. `place` may be a DOM node that the editor should\n be appended to, a function that will place it into the document,\n or an object whose `mount` property holds the node to use as the\n document container. If it is `null`, the editor will not be\n added to the document.\n */\n constructor(place, props) {\n this._root = null;\n /**\n @internal\n */\n this.focused = false;\n /**\n Kludge used to work around a Chrome bug @internal\n */\n this.trackWrites = null;\n this.mounted = false;\n /**\n @internal\n */\n this.markCursor = null;\n /**\n @internal\n */\n this.cursorWrapper = null;\n /**\n @internal\n */\n this.lastSelectedViewDesc = undefined;\n /**\n @internal\n */\n this.input = new InputState;\n this.prevDirectPlugins = [];\n this.pluginViews = [];\n /**\n Holds `true` when a hack node is needed in Firefox to prevent the\n [space is eaten issue](https://github.com/ProseMirror/prosemirror/issues/651)\n @internal\n */\n this.requiresGeckoHackNode = false;\n /**\n When editor content is being dragged, this object contains\n information about the dragged slice and whether it is being\n copied or moved. At any other time, it is null.\n */\n this.dragging = null;\n this._props = props;\n this.state = props.state;\n this.directPlugins = props.plugins || [];\n this.directPlugins.forEach(checkStateComponent);\n this.dispatch = this.dispatch.bind(this);\n this.dom = (place && place.mount) || document.createElement(\"div\");\n if (place) {\n if (place.appendChild)\n place.appendChild(this.dom);\n else if (typeof place == \"function\")\n place(this.dom);\n else if (place.mount)\n this.mounted = true;\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n this.nodeViews = buildNodeViews(this);\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this);\n this.domObserver = new DOMObserver(this, (from, to, typeOver, added) => readDOMChange(this, from, to, typeOver, added));\n this.domObserver.start();\n initInput(this);\n this.updatePluginViews();\n }\n /**\n Holds `true` when a\n [composition](https://w3c.github.io/uievents/#events-compositionevents)\n is active.\n */\n get composing() { return this.input.composing; }\n /**\n The view's current [props](https://prosemirror.net/docs/ref/#view.EditorProps).\n */\n get props() {\n if (this._props.state != this.state) {\n let prev = this._props;\n this._props = {};\n for (let name in prev)\n this._props[name] = prev[name];\n this._props.state = this.state;\n }\n return this._props;\n }\n /**\n Update the view's props. Will immediately cause an update to\n the DOM.\n */\n update(props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents)\n ensureListeners(this);\n let prevProps = this._props;\n this._props = props;\n if (props.plugins) {\n props.plugins.forEach(checkStateComponent);\n this.directPlugins = props.plugins;\n }\n this.updateStateInner(props.state, prevProps);\n }\n /**\n Update the view by updating existing props object with the object\n given as argument. Equivalent to `view.update(Object.assign({},\n view.props, props))`.\n */\n setProps(props) {\n let updated = {};\n for (let name in this._props)\n updated[name] = this._props[name];\n updated.state = this.state;\n for (let name in props)\n updated[name] = props[name];\n this.update(updated);\n }\n /**\n Update the editor's `state` prop, without touching any of the\n other props.\n */\n updateState(state) {\n this.updateStateInner(state, this._props);\n }\n updateStateInner(state, prevProps) {\n var _a;\n let prev = this.state, redraw = false, updateSel = false;\n // When stored marks are added, stop composition, so that they can\n // be displayed.\n if (state.storedMarks && this.composing) {\n clearComposition(this);\n updateSel = true;\n }\n this.state = state;\n let pluginsChanged = prev.plugins != state.plugins || this._props.plugins != prevProps.plugins;\n if (pluginsChanged || this._props.plugins != prevProps.plugins || this._props.nodeViews != prevProps.nodeViews) {\n let nodeViews = buildNodeViews(this);\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews;\n redraw = true;\n }\n }\n if (pluginsChanged || prevProps.handleDOMEvents != this._props.handleDOMEvents) {\n ensureListeners(this);\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n let innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this);\n let scroll = prev.plugins != state.plugins && !prev.doc.eq(state.doc) ? \"reset\"\n : state.scrollToSelection > prev.scrollToSelection ? \"to selection\" : \"preserve\";\n let updateDoc = redraw || !this.docView.matchesNode(state.doc, outerDeco, innerDeco);\n if (updateDoc || !state.selection.eq(prev.selection))\n updateSel = true;\n let oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this);\n if (updateSel) {\n this.domObserver.stop();\n // Work around an issue in Chrome, IE, and Edge where changing\n // the DOM around an active selection puts it into a broken\n // state where the thing the user sees differs from the\n // selection reported by the Selection object (#710, #973,\n // #1011, #1013, #1035).\n let forceSelUpdate = updateDoc && (ie || chrome) && !this.composing &&\n !prev.selection.empty && !state.selection.empty && selectionContextChanged(prev.selection, state.selection);\n if (updateDoc) {\n // If the node that the selection points into is written to,\n // Chrome sometimes starts misreporting the selection, so this\n // tracks that and forces a selection reset when our update\n // did write to the node.\n let chromeKludge = chrome ? (this.trackWrites = this.domSelectionRange().focusNode) : null;\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco([]);\n this.docView.destroy();\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);\n }\n if (chromeKludge && !this.trackWrites)\n forceSelUpdate = true;\n }\n // Work around for an issue where an update arriving right between\n // a DOM selection change and the \"selectionchange\" event for it\n // can cause a spurious DOM selection update, disrupting mouse\n // drag selection.\n if (forceSelUpdate ||\n !(this.input.mouseDown && this.domObserver.currentSelection.eq(this.domSelectionRange()) &&\n anchorInRightPlace(this))) {\n selectionToDOM(this, forceSelUpdate);\n }\n else {\n syncNodeSelection(this, state.selection);\n this.domObserver.setCurSelection();\n }\n this.domObserver.start();\n }\n this.updatePluginViews(prev);\n if (((_a = this.dragging) === null || _a === void 0 ? void 0 : _a.node) && !prev.doc.eq(state.doc))\n this.updateDraggedNode(this.dragging, prev);\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0;\n }\n else if (scroll == \"to selection\") {\n this.scrollToSelection();\n }\n else if (oldScrollPos) {\n resetScrollPos(oldScrollPos);\n }\n }\n /**\n @internal\n */\n scrollToSelection() {\n let startDOM = this.domSelectionRange().focusNode;\n if (this.someProp(\"handleScrollToSelection\", f => f(this))) ;\n else if (this.state.selection instanceof NodeSelection) {\n let target = this.docView.domAfterPos(this.state.selection.from);\n if (target.nodeType == 1)\n scrollRectIntoView(this, target.getBoundingClientRect(), startDOM);\n }\n else {\n scrollRectIntoView(this, this.coordsAtPos(this.state.selection.head, 1), startDOM);\n }\n }\n destroyPluginViews() {\n let view;\n while (view = this.pluginViews.pop())\n if (view.destroy)\n view.destroy();\n }\n updatePluginViews(prevState) {\n if (!prevState || prevState.plugins != this.state.plugins || this.directPlugins != this.prevDirectPlugins) {\n this.prevDirectPlugins = this.directPlugins;\n this.destroyPluginViews();\n for (let i = 0; i < this.directPlugins.length; i++) {\n let plugin = this.directPlugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n for (let i = 0; i < this.state.plugins.length; i++) {\n let plugin = this.state.plugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n }\n else {\n for (let i = 0; i < this.pluginViews.length; i++) {\n let pluginView = this.pluginViews[i];\n if (pluginView.update)\n pluginView.update(this, prevState);\n }\n }\n }\n updateDraggedNode(dragging, prev) {\n let sel = dragging.node, found = -1;\n if (this.state.doc.nodeAt(sel.from) == sel.node) {\n found = sel.from;\n }\n else {\n let movedPos = sel.from + (this.state.doc.content.size - prev.doc.content.size);\n let moved = movedPos > 0 && this.state.doc.nodeAt(movedPos);\n if (moved == sel.node)\n found = movedPos;\n }\n this.dragging = new Dragging(dragging.slice, dragging.move, found < 0 ? undefined : NodeSelection.create(this.state.doc, found));\n }\n someProp(propName, f) {\n let prop = this._props && this._props[propName], value;\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n for (let i = 0; i < this.directPlugins.length; i++) {\n let prop = this.directPlugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n let plugins = this.state.plugins;\n if (plugins)\n for (let i = 0; i < plugins.length; i++) {\n let prop = plugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n }\n /**\n Query whether the view has focus.\n */\n hasFocus() {\n // Work around IE not handling focus correctly if resize handles are shown.\n // If the cursor is inside an element with resize handles, activeElement\n // will be that element instead of this.dom.\n if (ie) {\n // If activeElement is within this.dom, and there are no other elements\n // setting `contenteditable` to false in between, treat it as focused.\n let node = this.root.activeElement;\n if (node == this.dom)\n return true;\n if (!node || !this.dom.contains(node))\n return false;\n while (node && this.dom != node && this.dom.contains(node)) {\n if (node.contentEditable == 'false')\n return false;\n node = node.parentElement;\n }\n return true;\n }\n return this.root.activeElement == this.dom;\n }\n /**\n Focus the editor.\n */\n focus() {\n this.domObserver.stop();\n if (this.editable)\n focusPreventScroll(this.dom);\n selectionToDOM(this);\n this.domObserver.start();\n }\n /**\n Get the document root in which the editor exists. This will\n usually be the top-level `document`, but might be a [shadow\n DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM)\n root if the editor is inside one.\n */\n get root() {\n let cached = this._root;\n if (cached == null)\n for (let search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection)\n Object.getPrototypeOf(search).getSelection = () => search.ownerDocument.getSelection();\n return this._root = search;\n }\n }\n return cached || document;\n }\n /**\n When an existing editor view is moved to a new document or\n shadow tree, call this to make it recompute its root.\n */\n updateRoot() {\n this._root = null;\n }\n /**\n Given a pair of viewport coordinates, return the document\n position that corresponds to them. May return null if the given\n coordinates aren't inside of the editor. When an object is\n returned, its `pos` property is the position nearest to the\n coordinates, and its `inside` property holds the position of the\n inner node that the position falls inside of, or -1 if it is at\n the top level, not in any node.\n */\n posAtCoords(coords) {\n return posAtCoords(this, coords);\n }\n /**\n Returns the viewport rectangle at a given document position.\n `left` and `right` will be the same number, as this returns a\n flat cursor-ish rectangle. If the position is between two things\n that aren't directly adjacent, `side` determines which element\n is used. When < 0, the element before the position is used,\n otherwise the element after.\n */\n coordsAtPos(pos, side = 1) {\n return coordsAtPos(this, pos, side);\n }\n /**\n Find the DOM position that corresponds to the given document\n position. When `side` is negative, find the position as close as\n possible to the content before the position. When positive,\n prefer positions close to the content after the position. When\n zero, prefer as shallow a position as possible.\n \n Note that you should **not** mutate the editor's internal DOM,\n only inspect it (and even that is usually not necessary).\n */\n domAtPos(pos, side = 0) {\n return this.docView.domFromPos(pos, side);\n }\n /**\n Find the DOM node that represents the document node after the\n given position. May return `null` when the position doesn't point\n in front of a node or if the node is inside an opaque node view.\n \n This is intended to be able to call things like\n `getBoundingClientRect` on that DOM node. Do **not** mutate the\n editor DOM directly, or add styling this way, since that will be\n immediately overriden by the editor as it redraws the node.\n */\n nodeDOM(pos) {\n let desc = this.docView.descAt(pos);\n return desc ? desc.nodeDOM : null;\n }\n /**\n Find the document position that corresponds to a given DOM\n position. (Whenever possible, it is preferable to inspect the\n document structure directly, rather than poking around in the\n DOM, but sometimes—for example when interpreting an event\n target—you don't have a choice.)\n \n The `bias` parameter can be used to influence which side of a DOM\n node to use when the position is inside a leaf node.\n */\n posAtDOM(node, offset, bias = -1) {\n let pos = this.docView.posFromDOM(node, offset, bias);\n if (pos == null)\n throw new RangeError(\"DOM position not inside the editor\");\n return pos;\n }\n /**\n Find out whether the selection is at the end of a textblock when\n moving in a given direction. When, for example, given `\"left\"`,\n it will return true if moving left from the current cursor\n position would leave that position's parent textblock. Will apply\n to the view's current state by default, but it is possible to\n pass a different state.\n */\n endOfTextblock(dir, state) {\n return endOfTextblock(this, state || this.state, dir);\n }\n /**\n Run the editor's paste logic with the given HTML string. The\n `event`, if given, will be passed to the\n [`handlePaste`](https://prosemirror.net/docs/ref/#view.EditorProps.handlePaste) hook.\n */\n pasteHTML(html, event) {\n return doPaste(this, \"\", html, false, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Run the editor's paste logic with the given plain-text input.\n */\n pasteText(text, event) {\n return doPaste(this, text, null, true, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Removes the editor from the DOM and destroys all [node\n views](https://prosemirror.net/docs/ref/#view.NodeView).\n */\n destroy() {\n if (!this.docView)\n return;\n destroyInput(this);\n this.destroyPluginViews();\n if (this.mounted) {\n this.docView.update(this.state.doc, [], viewDecorations(this), this);\n this.dom.textContent = \"\";\n }\n else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom);\n }\n this.docView.destroy();\n this.docView = null;\n }\n /**\n This is true when the view has been\n [destroyed](https://prosemirror.net/docs/ref/#view.EditorView.destroy) (and thus should not be\n used anymore).\n */\n get isDestroyed() {\n return this.docView == null;\n }\n /**\n Used for testing.\n */\n dispatchEvent(event) {\n return dispatchEvent(this, event);\n }\n /**\n Dispatch a transaction. Will call\n [`dispatchTransaction`](https://prosemirror.net/docs/ref/#view.DirectEditorProps.dispatchTransaction)\n when given, and otherwise defaults to applying the transaction to\n the current state and calling\n [`updateState`](https://prosemirror.net/docs/ref/#view.EditorView.updateState) with the result.\n This method is bound to the view instance, so that it can be\n easily passed around.\n */\n dispatch(tr) {\n let dispatchTransaction = this._props.dispatchTransaction;\n if (dispatchTransaction)\n dispatchTransaction.call(this, tr);\n else\n this.updateState(this.state.apply(tr));\n }\n /**\n @internal\n */\n domSelectionRange() {\n return safari && this.root.nodeType === 11 && deepActiveElement(this.dom.ownerDocument) == this.dom\n ? safariShadowSelectionRange(this) : this.domSelection();\n }\n /**\n @internal\n */\n domSelection() {\n return this.root.getSelection();\n }\n}\nfunction computeDocDeco(view) {\n let attrs = Object.create(null);\n attrs.class = \"ProseMirror\";\n attrs.contenteditable = String(view.editable);\n view.someProp(\"attributes\", value => {\n if (typeof value == \"function\")\n value = value(view.state);\n if (value)\n for (let attr in value) {\n if (attr == \"class\")\n attrs.class += \" \" + value[attr];\n else if (attr == \"style\")\n attrs.style = (attrs.style ? attrs.style + \";\" : \"\") + value[attr];\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n attrs[attr] = String(value[attr]);\n }\n });\n if (!attrs.translate)\n attrs.translate = \"no\";\n return [Decoration.node(0, view.state.doc.content.size, attrs)];\n}\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n let dom = document.createElement(\"img\");\n dom.className = \"ProseMirror-separator\";\n dom.setAttribute(\"mark-placeholder\", \"true\");\n dom.setAttribute(\"alt\", \"\");\n view.cursorWrapper = { dom, deco: Decoration.widget(view.state.selection.head, dom, { raw: true, marks: view.markCursor }) };\n }\n else {\n view.cursorWrapper = null;\n }\n}\nfunction getEditable(view) {\n return !view.someProp(\"editable\", value => value(view.state) === false);\n}\nfunction selectionContextChanged(sel1, sel2) {\n let depth = Math.min(sel1.$anchor.sharedDepth(sel1.head), sel2.$anchor.sharedDepth(sel2.head));\n return sel1.$anchor.start(depth) != sel2.$anchor.start(depth);\n}\nfunction buildNodeViews(view) {\n let result = Object.create(null);\n function add(obj) {\n for (let prop in obj)\n if (!Object.prototype.hasOwnProperty.call(result, prop))\n result[prop] = obj[prop];\n }\n view.someProp(\"nodeViews\", add);\n view.someProp(\"markViews\", add);\n return result;\n}\nfunction changedNodeViews(a, b) {\n let nA = 0, nB = 0;\n for (let prop in a) {\n if (a[prop] != b[prop])\n return true;\n nA++;\n }\n for (let _ in b)\n nB++;\n return nA != nB;\n}\nfunction checkStateComponent(plugin) {\n if (plugin.spec.state || plugin.spec.filterTransaction || plugin.spec.appendTransaction)\n throw new RangeError(\"Plugins passed directly to the view must not have a state component\");\n}\n\nexport { Decoration, DecorationSet, EditorView, __endComposition, __parseFromClipboard, __serializeForClipboard };\n","export var base = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 10: \"Enter\",\n 12: \"NumLock\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 44: \"PrintScreen\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Meta\",\n 92: \"Meta\",\n 106: \"*\",\n 107: \"+\",\n 108: \",\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 160: \"Shift\",\n 161: \"Shift\",\n 162: \"Control\",\n 163: \"Control\",\n 164: \"Alt\",\n 165: \"Alt\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\"\n}\n\nexport var shift = {\n 48: \")\",\n 49: \"!\",\n 50: \"@\",\n 51: \"#\",\n 52: \"$\",\n 53: \"%\",\n 54: \"^\",\n 55: \"&\",\n 56: \"*\",\n 57: \"(\",\n 59: \":\",\n 61: \"+\",\n 173: \"_\",\n 186: \":\",\n 187: \"+\",\n 188: \"<\",\n 189: \"_\",\n 190: \">\",\n 191: \"?\",\n 192: \"~\",\n 219: \"{\",\n 220: \"|\",\n 221: \"}\",\n 222: \"\\\"\"\n}\n\nvar mac = typeof navigator != \"undefined\" && /Mac/.test(navigator.platform)\nvar ie = typeof navigator != \"undefined\" && /MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent)\n\n// Fill in the digit keys\nfor (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)\n\n// The function keys\nfor (var i = 1; i <= 24; i++) base[i + 111] = \"F\" + i\n\n// And the alphabetic keys\nfor (var i = 65; i <= 90; i++) {\n base[i] = String.fromCharCode(i + 32)\n shift[i] = String.fromCharCode(i)\n}\n\n// For each code that doesn't have a shift-equivalent, copy the base name\nfor (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]\n\nexport function keyName(event) {\n // On macOS, keys held with Shift and Cmd don't reflect the effect of Shift in `.key`.\n // On IE, shift effect is never included in `.key`.\n var ignoreKey = mac && event.metaKey && event.shiftKey && !event.ctrlKey && !event.altKey ||\n ie && event.shiftKey && event.key && event.key.length == 1 ||\n event.key == \"Unidentified\"\n var name = (!ignoreKey && event.key) ||\n (event.shiftKey ? shift : base)[event.keyCode] ||\n event.key || \"Unidentified\"\n // Edge sometimes produces wrong names (Issue #3)\n if (name == \"Esc\") name = \"Escape\"\n if (name == \"Del\") name = \"Delete\"\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n if (name == \"Left\") name = \"ArrowLeft\"\n if (name == \"Up\") name = \"ArrowUp\"\n if (name == \"Right\") name = \"ArrowRight\"\n if (name == \"Down\") name = \"ArrowDown\"\n return name\n}\n","import { keyName, base } from 'w3c-keyname';\nimport { Plugin } from 'prosemirror-state';\n\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform) : false;\nfunction normalizeKeyName(name) {\n let parts = name.split(/-(?!$)/), result = parts[parts.length - 1];\n if (result == \"Space\")\n result = \" \";\n let alt, ctrl, shift, meta;\n for (let i = 0; i < parts.length - 1; i++) {\n let mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod))\n meta = true;\n else if (/^a(lt)?$/i.test(mod))\n alt = true;\n else if (/^(c|ctrl|control)$/i.test(mod))\n ctrl = true;\n else if (/^s(hift)?$/i.test(mod))\n shift = true;\n else if (/^mod$/i.test(mod)) {\n if (mac)\n meta = true;\n else\n ctrl = true;\n }\n else\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n if (alt)\n result = \"Alt-\" + result;\n if (ctrl)\n result = \"Ctrl-\" + result;\n if (meta)\n result = \"Meta-\" + result;\n if (shift)\n result = \"Shift-\" + result;\n return result;\n}\nfunction normalize(map) {\n let copy = Object.create(null);\n for (let prop in map)\n copy[normalizeKeyName(prop)] = map[prop];\n return copy;\n}\nfunction modifiers(name, event, shift = true) {\n if (event.altKey)\n name = \"Alt-\" + name;\n if (event.ctrlKey)\n name = \"Ctrl-\" + name;\n if (event.metaKey)\n name = \"Meta-\" + name;\n if (shift && event.shiftKey)\n name = \"Shift-\" + name;\n return name;\n}\n/**\nCreate a keymap plugin for the given set of bindings.\n\nBindings should map key names to [command](https://prosemirror.net/docs/ref/#commands)-style\nfunctions, which will be called with `(EditorState, dispatch,\nEditorView)` arguments, and should return true when they've handled\nthe key. Note that the view argument isn't part of the command\nprotocol, but can be used as an escape hatch if a binding needs to\ndirectly interact with the UI.\n\nKey names may be strings like `\"Shift-Ctrl-Enter\"`—a key\nidentifier prefixed with zero or more modifiers. Key identifiers\nare based on the strings that can appear in\n[`KeyEvent.key`](https:developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key).\nUse lowercase letters to refer to letter keys (or uppercase letters\nif you want shift to be held). You may use `\"Space\"` as an alias\nfor the `\" \"` name.\n\nModifiers can be given in any order. `Shift-` (or `s-`), `Alt-` (or\n`a-`), `Ctrl-` (or `c-` or `Control-`) and `Cmd-` (or `m-` or\n`Meta-`) are recognized. For characters that are created by holding\nshift, the `Shift-` prefix is implied, and should not be added\nexplicitly.\n\nYou can use `Mod-` as a shorthand for `Cmd-` on Mac and `Ctrl-` on\nother platforms.\n\nYou can add multiple keymap plugins to an editor. The order in\nwhich they appear determines their precedence (the ones early in\nthe array get to dispatch first).\n*/\nfunction keymap(bindings) {\n return new Plugin({ props: { handleKeyDown: keydownHandler(bindings) } });\n}\n/**\nGiven a set of bindings (using the same format as\n[`keymap`](https://prosemirror.net/docs/ref/#keymap.keymap)), return a [keydown\nhandler](https://prosemirror.net/docs/ref/#view.EditorProps.handleKeyDown) that handles them.\n*/\nfunction keydownHandler(bindings) {\n let map = normalize(bindings);\n return function (view, event) {\n let name = keyName(event), baseName, direct = map[modifiers(name, event)];\n if (direct && direct(view.state, view.dispatch, view))\n return true;\n // A character key\n if (name.length == 1 && name != \" \") {\n if (event.shiftKey) {\n // In case the name was already modified by shift, try looking\n // it up without its shift modifier\n let noShift = map[modifiers(name, event, false)];\n if (noShift && noShift(view.state, view.dispatch, view))\n return true;\n }\n if ((event.shiftKey || event.altKey || event.metaKey || name.charCodeAt(0) > 127) &&\n (baseName = base[event.keyCode]) && baseName != name) {\n // Try falling back to the keyCode when there's a modifier\n // active or the character produced isn't ASCII, and our table\n // produces a different name from the the keyCode. See #668,\n // #1060\n let fromCode = map[modifiers(baseName, event)];\n if (fromCode && fromCode(view.state, view.dispatch, view))\n return true;\n }\n }\n return false;\n };\n}\n\nexport { keydownHandler, keymap };\n","import { liftTarget, replaceStep, ReplaceStep, canJoin, joinPoint, canSplit, ReplaceAroundStep, findWrapping } from 'prosemirror-transform';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { NodeSelection, Selection, TextSelection, AllSelection } from 'prosemirror-state';\n\n/**\nDelete the selection, if there is one.\n*/\nconst deleteSelection = (state, dispatch) => {\n if (state.selection.empty)\n return false;\n if (dispatch)\n dispatch(state.tr.deleteSelection().scrollIntoView());\n return true;\n};\nfunction atBlockStart(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and at the start of a textblock, try to\nreduce the distance between that block and the one before it—if\nthere's a block directly before it that can be joined, join them.\nIf not, try to move the selected block closer to the next one in\nthe document structure by lifting it out of its parent or moving it\ninto a parent of the previous block. Will use the view for accurate\n(bidi-aware) start-of-textblock detection if given.\n*/\nconst joinBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n // If there is no node before this, try to lift\n if (!$cut) {\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n let before = $cut.nodeBefore;\n // Apply the joining algorithm\n if (!before.type.spec.isolating && deleteBarrier(state, $cut, dispatch))\n return true;\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || NodeSelection.isSelectable(before))) {\n let delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(before, \"end\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : NodeSelection.create(tr.doc, $cut.pos - before.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nA more limited form of [`joinBackward`]($commands.joinBackward)\nthat only tries to join the current textblock to the one before\nit, if the cursor is at the start of a textblock.\n*/\nconst joinTextblockBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\n/**\nA more limited form of [`joinForward`]($commands.joinForward)\nthat only tries to join the current textblock to the one after\nit, if the cursor is at the end of a textblock.\n*/\nconst joinTextblockForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\nfunction joinTextblocksAround(state, $cut, dispatch) {\n let before = $cut.nodeBefore, beforeText = before, beforePos = $cut.pos - 1;\n for (; !beforeText.isTextblock; beforePos--) {\n if (beforeText.type.spec.isolating)\n return false;\n let child = beforeText.lastChild;\n if (!child)\n return false;\n beforeText = child;\n }\n let after = $cut.nodeAfter, afterText = after, afterPos = $cut.pos + 1;\n for (; !afterText.isTextblock; afterPos++) {\n if (afterText.type.spec.isolating)\n return false;\n let child = afterText.firstChild;\n if (!child)\n return false;\n afterText = child;\n }\n let step = replaceStep(state.doc, beforePos, afterPos, Slice.empty);\n if (!step || step.from != beforePos ||\n step instanceof ReplaceStep && step.slice.size >= afterPos - beforePos)\n return false;\n if (dispatch) {\n let tr = state.tr.step(step);\n tr.setSelection(TextSelection.create(tr.doc, beforePos));\n dispatch(tr.scrollIntoView());\n }\n return true;\n}\nfunction textblockAt(node, side, only = false) {\n for (let scan = node; scan; scan = (side == \"start\" ? scan.firstChild : scan.lastChild)) {\n if (scan.isTextblock)\n return true;\n if (only && scan.childCount != 1)\n return false;\n }\n return false;\n}\n/**\nWhen the selection is empty and at the start of a textblock, select\nthe node before that textblock, if possible. This is intended to be\nbound to keys like backspace, after\n[`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward) or other deleting\ncommands, as a fall-back behavior when the schema doesn't allow\ndeletion at the selected point.\n*/\nconst selectNodeBackward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0)\n return false;\n $cut = findCutBefore($head);\n }\n let node = $cut && $cut.nodeBefore;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView());\n return true;\n};\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0)\n return $pos.doc.resolve($pos.before(i + 1));\n if ($pos.node(i).type.spec.isolating)\n break;\n }\n return null;\n}\nfunction atBlockEnd(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and the cursor is at the end of a\ntextblock, try to reduce or remove the boundary between that block\nand the one after it, either by joining them or by moving the other\nblock closer to this one in the tree structure. Will use the view\nfor accurate start-of-textblock detection if given.\n*/\nconst joinForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n // If there is no node after this, there's nothing to do\n if (!$cut)\n return false;\n let after = $cut.nodeAfter;\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch))\n return true;\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || NodeSelection.isSelectable(after))) {\n let delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(after, \"start\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nWhen the selection is empty and at the end of a textblock, select\nthe node coming after that textblock, if possible. This is intended\nto be bound to keys like delete, after\n[`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward) and similar deleting\ncommands, to provide a fall-back behavior when the schema doesn't\nallow deletion at the selected point.\n*/\nconst selectNodeForward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n return false;\n $cut = findCutAfter($head);\n }\n let node = $cut && $cut.nodeAfter;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos)).scrollIntoView());\n return true;\n};\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n let parent = $pos.node(i);\n if ($pos.index(i) + 1 < parent.childCount)\n return $pos.doc.resolve($pos.after(i + 1));\n if (parent.type.spec.isolating)\n break;\n }\n return null;\n}\n/**\nJoin the selected block or, if there is a text selection, the\nclosest ancestor block of the selection that can be joined, with\nthe sibling above it.\n*/\nconst joinUp = (state, dispatch) => {\n let sel = state.selection, nodeSel = sel instanceof NodeSelection, point;\n if (nodeSel) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.from))\n return false;\n point = sel.from;\n }\n else {\n point = joinPoint(state.doc, sel.from, -1);\n if (point == null)\n return false;\n }\n if (dispatch) {\n let tr = state.tr.join(point);\n if (nodeSel)\n tr.setSelection(NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nJoin the selected block, or the closest ancestor of the selection\nthat can be joined, with the sibling after it.\n*/\nconst joinDown = (state, dispatch) => {\n let sel = state.selection, point;\n if (sel instanceof NodeSelection) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.to))\n return false;\n point = sel.to;\n }\n else {\n point = joinPoint(state.doc, sel.to, 1);\n if (point == null)\n return false;\n }\n if (dispatch)\n dispatch(state.tr.join(point).scrollIntoView());\n return true;\n};\n/**\nLift the selected block, or the closest ancestor block of the\nselection that can be lifted, out of its parent node.\n*/\nconst lift = (state, dispatch) => {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nIf the selection is in a node whose type has a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, replace the\nselection with a newline character.\n*/\nconst newlineInCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n if (dispatch)\n dispatch(state.tr.insertText(\"\\n\").scrollIntoView());\n return true;\n};\nfunction defaultBlockAt(match) {\n for (let i = 0; i < match.edgeCount; i++) {\n let { type } = match.edge(i);\n if (type.isTextblock && !type.hasRequiredAttrs())\n return type;\n }\n return null;\n}\n/**\nWhen the selection is in a node with a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, create a\ndefault block after the code block, and move the cursor there.\n*/\nconst exitCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n let above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after));\n if (!type || !above.canReplaceWith(after, after, type))\n return false;\n if (dispatch) {\n let pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill());\n tr.setSelection(Selection.near(tr.doc.resolve(pos), 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf a block node is selected, create an empty paragraph before (if\nit is its parent's first child) or after it.\n*/\nconst createParagraphNear = (state, dispatch) => {\n let sel = state.selection, { $from, $to } = sel;\n if (sel instanceof AllSelection || $from.parent.inlineContent || $to.parent.inlineContent)\n return false;\n let type = defaultBlockAt($to.parent.contentMatchAt($to.indexAfter()));\n if (!type || !type.isTextblock)\n return false;\n if (dispatch) {\n let side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos;\n let tr = state.tr.insert(side, type.createAndFill());\n tr.setSelection(TextSelection.create(tr.doc, side + 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf the cursor is in an empty textblock that can be lifted, lift the\nblock.\n*/\nconst liftEmptyBlock = (state, dispatch) => {\n let { $cursor } = state.selection;\n if (!$cursor || $cursor.parent.content.size)\n return false;\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n let before = $cursor.before();\n if (canSplit(state.doc, before)) {\n if (dispatch)\n dispatch(state.tr.split(before).scrollIntoView());\n return true;\n }\n }\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nCreate a variant of [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock) that uses\na custom function to determine the type of the newly split off block.\n*/\nfunction splitBlockAs(splitNode) {\n return (state, dispatch) => {\n let { $from, $to } = state.selection;\n if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(state.doc, $from.pos))\n return false;\n if (dispatch)\n dispatch(state.tr.split($from.pos).scrollIntoView());\n return true;\n }\n if (!$from.parent.isBlock)\n return false;\n if (dispatch) {\n let atEnd = $to.parentOffset == $to.parent.content.size;\n let tr = state.tr;\n if (state.selection instanceof TextSelection || state.selection instanceof AllSelection)\n tr.deleteSelection();\n let deflt = $from.depth == 0 ? null : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));\n let splitType = splitNode && splitNode($to.parent, atEnd);\n let types = splitType ? [splitType] : atEnd && deflt ? [{ type: deflt }] : undefined;\n let can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types);\n if (!types && !can && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : undefined)) {\n if (deflt)\n types = [{ type: deflt }];\n can = true;\n }\n if (can) {\n tr.split(tr.mapping.map($from.pos), 1, types);\n if (!atEnd && !$from.parentOffset && $from.parent.type != deflt) {\n let first = tr.mapping.map($from.before()), $first = tr.doc.resolve(first);\n if (deflt && $from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt))\n tr.setNodeMarkup(tr.mapping.map($from.before()), deflt);\n }\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n/**\nSplit the parent block of the selection. If the selection is a text\nselection, also delete its content.\n*/\nconst splitBlock = splitBlockAs();\n/**\nActs like [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock), but without\nresetting the set of active marks at the cursor.\n*/\nconst splitBlockKeepMarks = (state, dispatch) => {\n return splitBlock(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n};\n/**\nMove the selection to the node wrapping the current selection, if\nany. (Will not select the document node.)\n*/\nconst selectParentNode = (state, dispatch) => {\n let { $from, to } = state.selection, pos;\n let same = $from.sharedDepth(to);\n if (same == 0)\n return false;\n pos = $from.before(same);\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, pos)));\n return true;\n};\n/**\nSelect the whole document.\n*/\nconst selectAll = (state, dispatch) => {\n if (dispatch)\n dispatch(state.tr.setSelection(new AllSelection(state.doc)));\n return true;\n};\nfunction joinMaybeClear(state, $pos, dispatch) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index();\n if (!before || !after || !before.type.compatibleContent(after.type))\n return false;\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch)\n dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView());\n return true;\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || canJoin(state.doc, $pos.pos)))\n return false;\n if (dispatch)\n dispatch(state.tr\n .clearIncompatible($pos.pos, before.type, before.contentMatchAt(before.childCount))\n .join($pos.pos)\n .scrollIntoView());\n return true;\n}\nfunction deleteBarrier(state, $cut, dispatch) {\n let before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match;\n if (before.type.spec.isolating || after.type.spec.isolating)\n return false;\n if (joinMaybeClear(state, $cut, dispatch))\n return true;\n let canDelAfter = $cut.parent.canReplace($cut.index(), $cut.index() + 1);\n if (canDelAfter &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n let end = $cut.pos + after.nodeSize, wrap = Fragment.empty;\n for (let i = conn.length - 1; i >= 0; i--)\n wrap = Fragment.from(conn[i].create(null, wrap));\n wrap = Fragment.from(before.copy(wrap));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice(wrap, 1, 0), conn.length, true));\n let joinAt = end + 2 * conn.length;\n if (canJoin(tr.doc, joinAt))\n tr.join(joinAt);\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let selAfter = Selection.findFrom($cut, 1);\n let range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && liftTarget(range);\n if (target != null && target >= $cut.depth) {\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n if (canDelAfter && textblockAt(after, \"start\", true) && textblockAt(before, \"end\")) {\n let at = before, wrap = [];\n for (;;) {\n wrap.push(at);\n if (at.isTextblock)\n break;\n at = at.lastChild;\n }\n let afterText = after, afterDepth = 1;\n for (; !afterText.isTextblock; afterText = afterText.firstChild)\n afterDepth++;\n if (at.canReplace(at.childCount, at.childCount, afterText.content)) {\n if (dispatch) {\n let end = Fragment.empty;\n for (let i = wrap.length - 1; i >= 0; i--)\n end = Fragment.from(wrap[i].copy(end));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - wrap.length, $cut.pos + after.nodeSize, $cut.pos + afterDepth, $cut.pos + after.nodeSize - afterDepth, new Slice(end, wrap.length, 0), 0, true));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n return false;\n}\nfunction selectTextblockSide(side) {\n return function (state, dispatch) {\n let sel = state.selection, $pos = side < 0 ? sel.$from : sel.$to;\n let depth = $pos.depth;\n while ($pos.node(depth).isInline) {\n if (!depth)\n return false;\n depth--;\n }\n if (!$pos.node(depth).isTextblock)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(TextSelection.create(state.doc, side < 0 ? $pos.start(depth) : $pos.end(depth))));\n return true;\n };\n}\n/**\nMoves the cursor to the start of current text block.\n*/\nconst selectTextblockStart = selectTextblockSide(-1);\n/**\nMoves the cursor to the end of current text block.\n*/\nconst selectTextblockEnd = selectTextblockSide(1);\n// Parameterized commands\n/**\nWrap the selection in a node of the given type with the given\nattributes.\n*/\nfunction wrapIn(nodeType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping)\n return false;\n if (dispatch)\n dispatch(state.tr.wrap(range, wrapping).scrollIntoView());\n return true;\n };\n}\n/**\nReturns a command that tries to set the selected textblocks to the\ngiven node type with the given attributes.\n*/\nfunction setBlockType(nodeType, attrs = null) {\n return function (state, dispatch) {\n let applicable = false;\n for (let i = 0; i < state.selection.ranges.length && !applicable; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (applicable)\n return false;\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs))\n return;\n if (node.type == nodeType) {\n applicable = true;\n }\n else {\n let $pos = state.doc.resolve(pos), index = $pos.index();\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);\n }\n });\n }\n if (!applicable)\n return false;\n if (dispatch) {\n let tr = state.tr;\n for (let i = 0; i < state.selection.ranges.length; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n tr.setBlockType(from, to, nodeType, attrs);\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\nfunction markApplies(doc, ranges, type) {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n let can = $from.depth == 0 ? doc.inlineContent && doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, node => {\n if (can)\n return false;\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can)\n return true;\n }\n return false;\n}\n/**\nCreate a command function that toggles the given mark with the\ngiven attributes. Will return `false` when the current selection\ndoesn't support that mark. This will remove the mark if any marks\nof that type exist in the selection, or add it otherwise. If the\nselection is empty, this applies to the [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks) instead of a range of the\ndocument.\n*/\nfunction toggleMark(markType, attrs = null) {\n return function (state, dispatch) {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType))\n return false;\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n dispatch(state.tr.removeStoredMark(markType));\n else\n dispatch(state.tr.addStoredMark(markType.create(attrs)));\n }\n else {\n let has = false, tr = state.tr;\n for (let i = 0; !has && i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n has = state.doc.rangeHasMark($from.pos, $to.pos, markType);\n }\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n if (has) {\n tr.removeMark($from.pos, $to.pos, markType);\n }\n else {\n let from = $from.pos, to = $to.pos, start = $from.nodeAfter, end = $to.nodeBefore;\n let spaceStart = start && start.isText ? /^\\s*/.exec(start.text)[0].length : 0;\n let spaceEnd = end && end.isText ? /\\s*$/.exec(end.text)[0].length : 0;\n if (from + spaceStart < to) {\n from += spaceStart;\n to -= spaceEnd;\n }\n tr.addMark(from, to, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true;\n };\n}\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return (tr) => {\n if (!tr.isGeneric)\n return dispatch(tr);\n let ranges = [];\n for (let i = 0; i < tr.mapping.maps.length; i++) {\n let map = tr.mapping.maps[i];\n for (let j = 0; j < ranges.length; j++)\n ranges[j] = map.map(ranges[j]);\n map.forEach((_s, _e, from, to) => ranges.push(from, to));\n }\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n let joinable = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = ranges[i], to = ranges[i + 1];\n let $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth);\n for (let index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n let after = parent.maybeChild(index);\n if (!after)\n break;\n if (index && joinable.indexOf(pos) == -1) {\n let before = parent.child(index - 1);\n if (before.type == after.type && isJoinable(before, after))\n joinable.push(pos);\n }\n pos += after.nodeSize;\n }\n }\n // Join the joinable points\n joinable.sort((a, b) => a - b);\n for (let i = joinable.length - 1; i >= 0; i--) {\n if (canJoin(tr.doc, joinable[i]))\n tr.join(joinable[i]);\n }\n dispatch(tr);\n };\n}\n/**\nWrap a command so that, when it produces a transform that causes\ntwo joinable nodes to end up next to each other, those are joined.\nNodes are considered joinable when they are of the same type and\nwhen the `isJoinable` predicate returns true for them or, if an\narray of strings was passed, if their node type name is in that\narray.\n*/\nfunction autoJoin(command, isJoinable) {\n let canJoin = Array.isArray(isJoinable) ? (node) => isJoinable.indexOf(node.type.name) > -1\n : isJoinable;\n return (state, dispatch, view) => command(state, dispatch && wrapDispatchForJoin(dispatch, canJoin), view);\n}\n/**\nCombine a number of command functions into a single function (which\ncalls them one by one until one returns true).\n*/\nfunction chainCommands(...commands) {\n return function (state, dispatch, view) {\n for (let i = 0; i < commands.length; i++)\n if (commands[i](state, dispatch, view))\n return true;\n return false;\n };\n}\nlet backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward);\nlet del = chainCommands(deleteSelection, joinForward, selectNodeForward);\n/**\nA basic keymap containing bindings not specific to any schema.\nBinds the following keys (when multiple commands are listed, they\nare chained with [`chainCommands`](https://prosemirror.net/docs/ref/#commands.chainCommands)):\n\n* **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n* **Mod-Enter** to `exitCode`\n* **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n* **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-a** to `selectAll`\n*/\nconst pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Shift-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n};\n/**\nA copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n**Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n**Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\nCtrl-Delete.\n*/\nconst macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"],\n \"Ctrl-a\": selectTextblockStart,\n \"Ctrl-e\": selectTextblockEnd\n};\nfor (let key in pcBaseKeymap)\n macBaseKeymap[key] = pcBaseKeymap[key];\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform)\n // @ts-ignore\n : typeof os != \"undefined\" && os.platform ? os.platform() == \"darwin\" : false;\n/**\nDepending on the detected platform, this will hold\n[`pcBasekeymap`](https://prosemirror.net/docs/ref/#commands.pcBaseKeymap) or\n[`macBaseKeymap`](https://prosemirror.net/docs/ref/#commands.macBaseKeymap).\n*/\nconst baseKeymap = mac ? macBaseKeymap : pcBaseKeymap;\n\nexport { autoJoin, baseKeymap, chainCommands, createParagraphNear, deleteSelection, exitCode, joinBackward, joinDown, joinForward, joinTextblockBackward, joinTextblockForward, joinUp, lift, liftEmptyBlock, macBaseKeymap, newlineInCode, pcBaseKeymap, selectAll, selectNodeBackward, selectNodeForward, selectParentNode, selectTextblockEnd, selectTextblockStart, setBlockType, splitBlock, splitBlockAs, splitBlockKeepMarks, toggleMark, wrapIn };\n","import { Plugin } from 'prosemirror-state';\nimport { findWrapping, canJoin } from 'prosemirror-transform';\n\n/**\nInput rules are regular expressions describing a piece of text\nthat, when typed, causes something to happen. This might be\nchanging two dashes into an emdash, wrapping a paragraph starting\nwith `\"> \"` into a blockquote, or something entirely different.\n*/\nclass InputRule {\n // :: (RegExp, union)\n /**\n Create an input rule. The rule applies when the user typed\n something and the text directly in front of the cursor matches\n `match`, which should end with `$`.\n \n The `handler` can be a string, in which case the matched text, or\n the first matched group in the regexp, is replaced by that\n string.\n \n Or a it can be a function, which will be called with the match\n array produced by\n [`RegExp.exec`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec),\n as well as the start and end of the matched range, and which can\n return a [transaction](https://prosemirror.net/docs/ref/#state.Transaction) that describes the\n rule's effect, or null to indicate the input was not handled.\n */\n constructor(\n /**\n @internal\n */\n match, handler, options = {}) {\n this.match = match;\n this.match = match;\n this.handler = typeof handler == \"string\" ? stringHandler(handler) : handler;\n this.undoable = options.undoable !== false;\n }\n}\nfunction stringHandler(string) {\n return function (state, match, start, end) {\n let insert = string;\n if (match[1]) {\n let offset = match[0].lastIndexOf(match[1]);\n insert += match[0].slice(offset + match[1].length);\n start += offset;\n let cutOff = start - end;\n if (cutOff > 0) {\n insert = match[0].slice(offset - cutOff, offset) + insert;\n start = end;\n }\n }\n return state.tr.insertText(insert, start, end);\n };\n}\nconst MAX_MATCH = 500;\n/**\nCreate an input rules plugin. When enabled, it will cause text\ninput that matches any of the given rules to trigger the rule's\naction.\n*/\nfunction inputRules({ rules }) {\n let plugin = new Plugin({\n state: {\n init() { return null; },\n apply(tr, prev) {\n let stored = tr.getMeta(this);\n if (stored)\n return stored;\n return tr.selectionSet || tr.docChanged ? null : prev;\n }\n },\n props: {\n handleTextInput(view, from, to, text) {\n return run(view, from, to, text, rules, plugin);\n },\n handleDOMEvents: {\n compositionend: (view) => {\n setTimeout(() => {\n let { $cursor } = view.state.selection;\n if ($cursor)\n run(view, $cursor.pos, $cursor.pos, \"\", rules, plugin);\n });\n }\n }\n },\n isInputRules: true\n });\n return plugin;\n}\nfunction run(view, from, to, text, rules, plugin) {\n if (view.composing)\n return false;\n let state = view.state, $from = state.doc.resolve(from);\n if ($from.parent.type.spec.code)\n return false;\n let textBefore = $from.parent.textBetween(Math.max(0, $from.parentOffset - MAX_MATCH), $from.parentOffset, null, \"\\ufffc\") + text;\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i], match = rule.match.exec(textBefore);\n let tr = match && rule.handler(state, match, from - (match[0].length - text.length), to);\n if (!tr)\n continue;\n if (rule.undoable)\n tr.setMeta(plugin, { transform: tr, from, to, text });\n view.dispatch(tr);\n return true;\n }\n return false;\n}\n/**\nThis is a command that will undo an input rule, if applying such a\nrule was the last thing that the user did.\n*/\nconst undoInputRule = (state, dispatch) => {\n let plugins = state.plugins;\n for (let i = 0; i < plugins.length; i++) {\n let plugin = plugins[i], undoable;\n if (plugin.spec.isInputRules && (undoable = plugin.getState(state))) {\n if (dispatch) {\n let tr = state.tr, toUndo = undoable.transform;\n for (let j = toUndo.steps.length - 1; j >= 0; j--)\n tr.step(toUndo.steps[j].invert(toUndo.docs[j]));\n if (undoable.text) {\n let marks = tr.doc.resolve(undoable.from).marks();\n tr.replaceWith(undoable.from, undoable.to, state.schema.text(undoable.text, marks));\n }\n else {\n tr.delete(undoable.from, undoable.to);\n }\n dispatch(tr);\n }\n return true;\n }\n }\n return false;\n};\n\n/**\nConverts double dashes to an emdash.\n*/\nconst emDash = new InputRule(/--$/, \"—\");\n/**\nConverts three dots to an ellipsis character.\n*/\nconst ellipsis = new InputRule(/\\.\\.\\.$/, \"…\");\n/**\n“Smart” opening double quotes.\n*/\nconst openDoubleQuote = new InputRule(/(?:^|[\\s\\{\\[\\(\\<'\"\\u2018\\u201C])(\")$/, \"“\");\n/**\n“Smart” closing double quotes.\n*/\nconst closeDoubleQuote = new InputRule(/\"$/, \"”\");\n/**\n“Smart” opening single quotes.\n*/\nconst openSingleQuote = new InputRule(/(?:^|[\\s\\{\\[\\(\\<'\"\\u2018\\u201C])(')$/, \"‘\");\n/**\n“Smart” closing single quotes.\n*/\nconst closeSingleQuote = new InputRule(/'$/, \"’\");\n/**\nSmart-quote related input rules.\n*/\nconst smartQuotes = [openDoubleQuote, closeDoubleQuote, openSingleQuote, closeSingleQuote];\n\n/**\nBuild an input rule for automatically wrapping a textblock when a\ngiven string is typed. The `regexp` argument is\ndirectly passed through to the `InputRule` constructor. You'll\nprobably want the regexp to start with `^`, so that the pattern can\nonly occur at the start of a textblock.\n\n`nodeType` is the type of node to wrap in. If it needs attributes,\nyou can either pass them directly, or pass a function that will\ncompute them from the regular expression match.\n\nBy default, if there's a node with the same type above the newly\nwrapped node, the rule will try to [join](https://prosemirror.net/docs/ref/#transform.Transform.join) those\ntwo nodes. You can pass a join predicate, which takes a regular\nexpression match and the node before the wrapped node, and can\nreturn a boolean to indicate whether a join should happen.\n*/\nfunction wrappingInputRule(regexp, nodeType, getAttrs = null, joinPredicate) {\n return new InputRule(regexp, (state, match, start, end) => {\n let attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n let tr = state.tr.delete(start, end);\n let $start = tr.doc.resolve(start), range = $start.blockRange(), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping)\n return null;\n tr.wrap(range, wrapping);\n let before = tr.doc.resolve(start - 1).nodeBefore;\n if (before && before.type == nodeType && canJoin(tr.doc, start - 1) &&\n (!joinPredicate || joinPredicate(match, before)))\n tr.join(start - 1);\n return tr;\n });\n}\n/**\nBuild an input rule that changes the type of a textblock when the\nmatched text is typed into it. You'll usually want to start your\nregexp with `^` to that it is only matched at the start of a\ntextblock. The optional `getAttrs` parameter can be used to compute\nthe new node's attributes, and works the same as in the\n`wrappingInputRule` function.\n*/\nfunction textblockTypeInputRule(regexp, nodeType, getAttrs = null) {\n return new InputRule(regexp, (state, match, start, end) => {\n let $start = state.doc.resolve(start);\n let attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n if (!$start.node(-1).canReplaceWith($start.index(-1), $start.indexAfter(-1), nodeType))\n return null;\n return state.tr\n .delete(start, end)\n .setBlockType(start, start, nodeType, attrs);\n });\n}\n\nexport { InputRule, closeDoubleQuote, closeSingleQuote, ellipsis, emDash, inputRules, openDoubleQuote, openSingleQuote, smartQuotes, textblockTypeInputRule, undoInputRule, wrappingInputRule };\n","var GOOD_LEAF_SIZE = 200;\n\n// :: class A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n if (!other.length) { return this }\n other = RopeSequence.from(other);\n\n return (!this.length && other) ||\n (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence>) → RopeSequence\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n if (!other.length) { return this }\n return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n return new Append(this, other)\n};\n\n// :: (?number, ?number) → RopeSequence\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from >= to) { return RopeSequence.empty }\n return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) → T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n if (i < 0 || i >= this.length) { return undefined }\n return this.getInner(i)\n};\n\n// :: ((element: T, index: number) → ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from <= to)\n { this.forEachInner(f, from, to, 0); }\n else\n { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) → U, ?number, ?number) → [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n var result = [];\n this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n return result\n};\n\n// :: (?union<[T], RopeSequence>) → RopeSequence\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n if (values instanceof RopeSequence) { return values }\n return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n function Leaf(values) {\n RopeSequence.call(this);\n this.values = values;\n }\n\n if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Leaf.prototype.constructor = Leaf;\n\n var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n Leaf.prototype.flatten = function flatten () {\n return this.values\n };\n\n Leaf.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n return new Leaf(this.values.slice(from, to))\n };\n\n Leaf.prototype.getInner = function getInner (i) {\n return this.values[i]\n };\n\n Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n for (var i = from; i < to; i++)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n for (var i = from - 1; i >= to; i--)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.leafAppend = function leafAppend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(this.values.concat(other.flatten())) }\n };\n\n Leaf.prototype.leafPrepend = function leafPrepend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(other.flatten().concat(this.values)) }\n };\n\n prototypeAccessors.length.get = function () { return this.values.length };\n\n prototypeAccessors.depth.get = function () { return 0 };\n\n Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n function Append(left, right) {\n RopeSequence.call(this);\n this.left = left;\n this.right = right;\n this.length = left.length + right.length;\n this.depth = Math.max(left.depth, right.depth) + 1;\n }\n\n if ( RopeSequence ) Append.__proto__ = RopeSequence;\n Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Append.prototype.constructor = Append;\n\n Append.prototype.flatten = function flatten () {\n return this.left.flatten().concat(this.right.flatten())\n };\n\n Append.prototype.getInner = function getInner (i) {\n return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n };\n\n Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from < leftLen &&\n this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n { return false }\n if (to > leftLen &&\n this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n { return false }\n };\n\n Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from > leftLen &&\n this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n { return false }\n if (to < leftLen &&\n this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n { return false }\n };\n\n Append.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n var leftLen = this.left.length;\n if (to <= leftLen) { return this.left.slice(from, to) }\n if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n };\n\n Append.prototype.leafAppend = function leafAppend (other) {\n var inner = this.right.leafAppend(other);\n if (inner) { return new Append(this.left, inner) }\n };\n\n Append.prototype.leafPrepend = function leafPrepend (other) {\n var inner = this.left.leafPrepend(other);\n if (inner) { return new Append(inner, this.right) }\n };\n\n Append.prototype.appendInner = function appendInner (other) {\n if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n { return new Append(this.left, new Append(this.right, other)) }\n return new Append(this, other)\n };\n\n return Append;\n}(RopeSequence));\n\nexport default RopeSequence;\n","import RopeSequence from 'rope-sequence';\nimport { Mapping } from 'prosemirror-transform';\nimport { PluginKey, Plugin } from 'prosemirror-state';\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' — a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n// Used to schedule history compression\nconst max_empty_items = 500;\nclass Branch {\n constructor(items, eventCount) {\n this.items = items;\n this.eventCount = eventCount;\n }\n // Pop the latest event off the branch's history and apply it\n // to a document transform.\n popEvent(state, preserveItems) {\n if (this.eventCount == 0)\n return null;\n let end = this.items.length;\n for (;; end--) {\n let next = this.items.get(end - 1);\n if (next.selection) {\n --end;\n break;\n }\n }\n let remap, mapFrom;\n if (preserveItems) {\n remap = this.remapping(end, this.items.length);\n mapFrom = remap.maps.length;\n }\n let transform = state.tr;\n let selection, remaining;\n let addAfter = [], addBefore = [];\n this.items.forEach((item, i) => {\n if (!item.step) {\n if (!remap) {\n remap = this.remapping(end, i + 1);\n mapFrom = remap.maps.length;\n }\n mapFrom--;\n addBefore.push(item);\n return;\n }\n if (remap) {\n addBefore.push(new Item(item.map));\n let step = item.step.map(remap.slice(mapFrom)), map;\n if (step && transform.maybeStep(step).doc) {\n map = transform.mapping.maps[transform.mapping.maps.length - 1];\n addAfter.push(new Item(map, undefined, undefined, addAfter.length + addBefore.length));\n }\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n }\n else {\n transform.maybeStep(item.step);\n }\n if (item.selection) {\n selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n remaining = new Branch(this.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this.eventCount - 1);\n return false;\n }\n }, this.items.length, 0);\n return { remaining: remaining, transform, selection: selection };\n }\n // Create a new branch with the given transform added.\n addTransform(transform, selection, histOptions, preserveItems) {\n let newItems = [], eventCount = this.eventCount;\n let oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n for (let i = 0; i < transform.steps.length; i++) {\n let step = transform.steps[i].invert(transform.docs[i]);\n let item = new Item(transform.mapping.maps[i], step, selection), merged;\n if (merged = lastItem && lastItem.merge(item)) {\n item = merged;\n if (i)\n newItems.pop();\n else\n oldItems = oldItems.slice(0, oldItems.length - 1);\n }\n newItems.push(item);\n if (selection) {\n eventCount++;\n selection = undefined;\n }\n if (!preserveItems)\n lastItem = item;\n }\n let overflow = eventCount - histOptions.depth;\n if (overflow > DEPTH_OVERFLOW) {\n oldItems = cutOffEvents(oldItems, overflow);\n eventCount -= overflow;\n }\n return new Branch(oldItems.append(newItems), eventCount);\n }\n remapping(from, to) {\n let maps = new Mapping;\n this.items.forEach((item, i) => {\n let mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n ? maps.maps.length - item.mirrorOffset : undefined;\n maps.appendMap(item.map, mirrorPos);\n }, from, to);\n return maps;\n }\n addMaps(array) {\n if (this.eventCount == 0)\n return this;\n return new Branch(this.items.append(array.map(map => new Item(map))), this.eventCount);\n }\n // When the collab module receives remote changes, the history has\n // to know about those, so that it can adjust the steps that were\n // rebased on top of the remote changes, and include the position\n // maps for the remote changes in its array of items.\n rebased(rebasedTransform, rebasedCount) {\n if (!this.eventCount)\n return this;\n let rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n let mapping = rebasedTransform.mapping;\n let newUntil = rebasedTransform.steps.length;\n let eventCount = this.eventCount;\n this.items.forEach(item => { if (item.selection)\n eventCount--; }, start);\n let iRebased = rebasedCount;\n this.items.forEach(item => {\n let pos = mapping.getMirror(--iRebased);\n if (pos == null)\n return;\n newUntil = Math.min(newUntil, pos);\n let map = mapping.maps[pos];\n if (item.step) {\n let step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n let selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n if (selection)\n eventCount++;\n rebasedItems.push(new Item(map, step, selection));\n }\n else {\n rebasedItems.push(new Item(map));\n }\n }, start);\n let newMaps = [];\n for (let i = rebasedCount; i < newUntil; i++)\n newMaps.push(new Item(mapping.maps[i]));\n let items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n let branch = new Branch(items, eventCount);\n if (branch.emptyItemCount() > max_empty_items)\n branch = branch.compress(this.items.length - rebasedItems.length);\n return branch;\n }\n emptyItemCount() {\n let count = 0;\n this.items.forEach(item => { if (!item.step)\n count++; });\n return count;\n }\n // Compressing a branch means rewriting it to push the air (map-only\n // items) out. During collaboration, these naturally accumulate\n // because each remote change adds one. The `upto` argument is used\n // to ensure that only the items below a given level are compressed,\n // because `rebased` relies on a clean, untouched set of items in\n // order to associate old items with rebased steps.\n compress(upto = this.items.length) {\n let remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n let items = [], events = 0;\n this.items.forEach((item, i) => {\n if (i >= upto) {\n items.push(item);\n if (item.selection)\n events++;\n }\n else if (item.step) {\n let step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n if (step) {\n let selection = item.selection && item.selection.map(remap.slice(mapFrom));\n if (selection)\n events++;\n let newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n if (merged = items.length && items[last].merge(newItem))\n items[last] = merged;\n else\n items.push(newItem);\n }\n }\n else if (item.map) {\n mapFrom--;\n }\n }, this.items.length, 0);\n return new Branch(RopeSequence.from(items.reverse()), events);\n }\n}\nBranch.empty = new Branch(RopeSequence.empty, 0);\nfunction cutOffEvents(items, n) {\n let cutPoint;\n items.forEach((item, i) => {\n if (item.selection && (n-- == 0)) {\n cutPoint = i;\n return false;\n }\n });\n return items.slice(cutPoint);\n}\nclass Item {\n constructor(\n // The (forward) step map for this item.\n map, \n // The inverted step\n step, \n // If this is non-null, this item is the start of a group, and\n // this selection is the starting selection for the group (the one\n // that was active before the first step was applied)\n selection, \n // If this item is the inverse of a previous mapping on the stack,\n // this points at the inverse's offset\n mirrorOffset) {\n this.map = map;\n this.step = step;\n this.selection = selection;\n this.mirrorOffset = mirrorOffset;\n }\n merge(other) {\n if (this.step && other.step && !other.selection) {\n let step = other.step.merge(this.step);\n if (step)\n return new Item(step.getMap().invert(), step, this.selection);\n }\n }\n}\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nclass HistoryState {\n constructor(done, undone, prevRanges, prevTime, prevComposition) {\n this.done = done;\n this.undone = undone;\n this.prevRanges = prevRanges;\n this.prevTime = prevTime;\n this.prevComposition = prevComposition;\n }\n}\nconst DEPTH_OVERFLOW = 20;\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n let historyTr = tr.getMeta(historyKey), rebased;\n if (historyTr)\n return historyTr.historyState;\n if (tr.getMeta(closeHistoryKey))\n history = new HistoryState(history.done, history.undone, null, 0, -1);\n let appended = tr.getMeta(\"appendedTransaction\");\n if (tr.steps.length == 0) {\n return history;\n }\n else if (appended && appended.getMeta(historyKey)) {\n if (appended.getMeta(historyKey).redo)\n return new HistoryState(history.done.addTransform(tr, undefined, options, mustPreserveItems(state)), history.undone, rangesFor(tr.mapping.maps[tr.steps.length - 1]), history.prevTime, history.prevComposition);\n else\n return new HistoryState(history.done, history.undone.addTransform(tr, undefined, options, mustPreserveItems(state)), null, history.prevTime, history.prevComposition);\n }\n else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n // Group transforms that occur in quick succession into one event.\n let composition = tr.getMeta(\"composition\");\n let newGroup = history.prevTime == 0 ||\n (!appended && history.prevComposition != composition &&\n (history.prevTime < (tr.time || 0) - options.newGroupDelay || !isAdjacentTo(tr, history.prevRanges)));\n let prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps[tr.steps.length - 1]);\n return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : undefined, options, mustPreserveItems(state)), Branch.empty, prevRanges, tr.time, composition == null ? history.prevComposition : composition);\n }\n else if (rebased = tr.getMeta(\"rebased\")) {\n // Used by the collab module to tell the history that some of its\n // content has been rebased.\n return new HistoryState(history.done.rebased(tr, rebased), history.undone.rebased(tr, rebased), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n else {\n return new HistoryState(history.done.addMaps(tr.mapping.maps), history.undone.addMaps(tr.mapping.maps), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n}\nfunction isAdjacentTo(transform, prevRanges) {\n if (!prevRanges)\n return false;\n if (!transform.docChanged)\n return true;\n let adjacent = false;\n transform.mapping.maps[0].forEach((start, end) => {\n for (let i = 0; i < prevRanges.length; i += 2)\n if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n adjacent = true;\n });\n return adjacent;\n}\nfunction rangesFor(map) {\n let result = [];\n map.forEach((_from, _to, from, to) => result.push(from, to));\n return result;\n}\nfunction mapRanges(ranges, mapping) {\n if (!ranges)\n return null;\n let result = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n if (from <= to)\n result.push(from, to);\n }\n return result;\n}\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, dispatch, redo) {\n let preserveItems = mustPreserveItems(state);\n let histOptions = historyKey.get(state).spec.config;\n let pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n if (!pop)\n return;\n let selection = pop.selection.resolve(pop.transform.doc);\n let added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(), histOptions, preserveItems);\n let newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0, -1);\n dispatch(pop.transform.setSelection(selection).setMeta(historyKey, { redo, historyState: newHist }).scrollIntoView());\n}\nlet cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n let plugins = state.plugins;\n if (cachedPreserveItemsPlugins != plugins) {\n cachedPreserveItems = false;\n cachedPreserveItemsPlugins = plugins;\n for (let i = 0; i < plugins.length; i++)\n if (plugins[i].spec.historyPreserveItems) {\n cachedPreserveItems = true;\n break;\n }\n }\n return cachedPreserveItems;\n}\n/**\nSet a flag on the given transaction that will prevent further steps\nfrom being appended to an existing history event (so that they\nrequire a separate undo command to undo).\n*/\nfunction closeHistory(tr) {\n return tr.setMeta(closeHistoryKey, true);\n}\nconst historyKey = new PluginKey(\"history\");\nconst closeHistoryKey = new PluginKey(\"closeHistory\");\n/**\nReturns a plugin that enables the undo history for an editor. The\nplugin will track undo and redo stacks, which can be used with the\n[`undo`](https://prosemirror.net/docs/ref/#history.undo) and [`redo`](https://prosemirror.net/docs/ref/#history.redo) commands.\n\nYou can set an `\"addToHistory\"` [metadata\nproperty](https://prosemirror.net/docs/ref/#state.Transaction.setMeta) of `false` on a transaction\nto prevent it from being rolled back by undo.\n*/\nfunction history(config = {}) {\n config = { depth: config.depth || 100,\n newGroupDelay: config.newGroupDelay || 500 };\n return new Plugin({\n key: historyKey,\n state: {\n init() {\n return new HistoryState(Branch.empty, Branch.empty, null, 0, -1);\n },\n apply(tr, hist, state) {\n return applyTransaction(hist, state, tr, config);\n }\n },\n config,\n props: {\n handleDOMEvents: {\n beforeinput(view, e) {\n let inputType = e.inputType;\n let command = inputType == \"historyUndo\" ? undo : inputType == \"historyRedo\" ? redo : null;\n if (!command)\n return false;\n e.preventDefault();\n return command(view.state, view.dispatch);\n }\n }\n }\n });\n}\n/**\nA command function that undoes the last change, if any.\n*/\nconst undo = (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || hist.done.eventCount == 0)\n return false;\n if (dispatch)\n histTransaction(hist, state, dispatch, false);\n return true;\n};\n/**\nA command function that redoes the last undone change, if any.\n*/\nconst redo = (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || hist.undone.eventCount == 0)\n return false;\n if (dispatch)\n histTransaction(hist, state, dispatch, true);\n return true;\n};\n/**\nThe amount of undoable events available in a given state.\n*/\nfunction undoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.done.eventCount : 0;\n}\n/**\nThe amount of redoable events available in a given editor state.\n*/\nfunction redoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.undone.eventCount : 0;\n}\n\nexport { closeHistory, history, redo, redoDepth, undo, undoDepth };\n","/**\n * @toast-ui/editor\n * @version 3.2.2 | Fri Feb 17 2023\n * @author NHN Cloud FE Development Lab \n * @license MIT\n */\n\nimport { Fragment, Schema, Slice, NodeRange, Mark as Mark$1, DOMParser, Node as Node$3 } from 'prosemirror-model';\nimport { DecorationSet, Decoration, EditorView } from 'prosemirror-view';\nimport { ReplaceAroundStep, liftTarget, canSplit, StepMap } from 'prosemirror-transform';\nimport { TextSelection, Plugin, PluginKey, EditorState, AllSelection, Selection, SelectionRange, NodeSelection } from 'prosemirror-state';\nimport { keymap } from 'prosemirror-keymap';\nimport { deleteSelection, selectAll, baseKeymap, chainCommands, joinForward, newlineInCode, setBlockType, wrapIn, toggleMark as toggleMark$1, exitCode } from 'prosemirror-commands';\nimport { InputRule, inputRules, undoInputRule } from 'prosemirror-inputrules';\nimport { undo, redo, history, undoDepth } from 'prosemirror-history';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics$1 = function(d, b) {\r\n extendStatics$1 = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics$1(d, b);\r\n};\r\n\r\nfunction __extends$1(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics$1(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign$1 = function() {\r\n __assign$1 = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign$1.apply(this, arguments);\r\n};\r\n\r\nfunction __spreadArray$1(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nfunction __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n}\n\n/**\n * @fileoverview Execute the provided callback once for each property of object which actually exist.\n * @author NHN FE Development Lab \n */\n\n/**\n * Execute the provided callback once for each property of object which actually exist.\n * If the callback function returns false, the loop will be stopped.\n * Callback function(iteratee) is invoked with three arguments:\n * 1) The value of the property\n * 2) The name of the property\n * 3) The object being traversed\n * @param {Object} obj The object that will be traversed\n * @param {function} iteratee Callback function\n * @param {Object} [context] Context(this) of callback function\n * @memberof module:collection\n * @example\n * // ES6\n * import forEachOwnProperties from 'tui-code-snippet/collection/forEachOwnProperties';\n * \n * // CommonJS\n * const forEachOwnProperties = require('tui-code-snippet/collection/forEachOwnProperties'); \n *\n * let sum = 0;\n *\n * forEachOwnProperties({a:1,b:2,c:3}, function(value){\n * sum += value;\n * });\n * alert(sum); // 6\n */\nfunction forEachOwnProperties$2(obj, iteratee, context) {\n var key;\n\n context = context || null;\n\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (iteratee.call(context, obj[key], key, obj) === false) {\n break;\n }\n }\n }\n}\n\nvar forEachOwnProperties_1 = forEachOwnProperties$2;\n\n/**\n * @fileoverview Extend the target object from other objects.\n * @author NHN FE Development Lab \n */\n\n/**\n * @module object\n */\n\n/**\n * Extend the target object from other objects.\n * @param {object} target - Object that will be extended\n * @param {...object} objects - Objects as sources\n * @returns {object} Extended object\n * @memberof module:object\n */\nfunction extend(target, objects) { // eslint-disable-line no-unused-vars\n var hasOwnProp = Object.prototype.hasOwnProperty;\n var source, prop, i, len;\n\n for (i = 1, len = arguments.length; i < len; i += 1) {\n source = arguments[i];\n for (prop in source) {\n if (hasOwnProp.call(source, prop)) {\n target[prop] = source[prop];\n }\n }\n }\n\n return target;\n}\n\nvar extend_1 = extend;\n\n/**\n * @fileoverview Check whether the given variable is a string or not.\n * @author NHN FE Development Lab \n */\n\n/**\n * Check whether the given variable is a string or not.\n * If the given variable is a string, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is string?\n * @memberof module:type\n */\nfunction isString$3(obj) {\n return typeof obj === 'string' || obj instanceof String;\n}\n\nvar isString_1 = isString$3;\n\n/**\n * @fileoverview Check whether the given variable is an instance of Array or not.\n * @author NHN FE Development Lab \n */\n\n/**\n * Check whether the given variable is an instance of Array or not.\n * If the given variable is an instance of Array, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is array instance?\n * @memberof module:type\n */\nfunction isArray$3(obj) {\n return obj instanceof Array;\n}\n\nvar isArray_1 = isArray$3;\n\n/**\n * @fileoverview Execute the provided callback once for each element present in the array(or Array-like object) in ascending order.\n * @author NHN FE Development Lab \n */\n\n/**\n * Execute the provided callback once for each element present\n * in the array(or Array-like object) in ascending order.\n * If the callback function returns false, the loop will be stopped.\n * Callback function(iteratee) is invoked with three arguments:\n * 1) The value of the element\n * 2) The index of the element\n * 3) The array(or Array-like object) being traversed\n * @param {Array|Arguments|NodeList} arr The array(or Array-like object) that will be traversed\n * @param {function} iteratee Callback function\n * @param {Object} [context] Context(this) of callback function\n * @memberof module:collection\n * @example\n * // ES6\n * import forEachArray from 'tui-code-snippet/collection/forEachArray';\n * \n * // CommonJS\n * const forEachArray = require('tui-code-snippet/collection/forEachArray'); \n *\n * let sum = 0;\n *\n * forEachArray([1,2,3], function(value){\n * sum += value;\n * });\n * alert(sum); // 6\n */\nfunction forEachArray$3(arr, iteratee, context) {\n var index = 0;\n var len = arr.length;\n\n context = context || null;\n\n for (; index < len; index += 1) {\n if (iteratee.call(context, arr[index], index, arr) === false) {\n break;\n }\n }\n}\n\nvar forEachArray_1 = forEachArray$3;\n\n/**\n * @fileoverview Execute the provided callback once for each property of object(or element of array) which actually exist.\n * @author NHN FE Development Lab \n */\n\nvar isArray$2 = isArray_1;\nvar forEachArray$2 = forEachArray_1;\nvar forEachOwnProperties$1 = forEachOwnProperties_1;\n\n/**\n * @module collection\n */\n\n/**\n * Execute the provided callback once for each property of object(or element of array) which actually exist.\n * If the object is Array-like object(ex-arguments object), It needs to transform to Array.(see 'ex2' of example).\n * If the callback function returns false, the loop will be stopped.\n * Callback function(iteratee) is invoked with three arguments:\n * 1) The value of the property(or The value of the element)\n * 2) The name of the property(or The index of the element)\n * 3) The object being traversed\n * @param {Object} obj The object that will be traversed\n * @param {function} iteratee Callback function\n * @param {Object} [context] Context(this) of callback function\n * @memberof module:collection\n * @example\n * // ES6\n * import forEach from 'tui-code-snippet/collection/forEach'; \n * \n * // CommonJS\n * const forEach = require('tui-code-snippet/collection/forEach'); \n *\n * let sum = 0;\n *\n * forEach([1,2,3], function(value){\n * sum += value;\n * });\n * alert(sum); // 6\n *\n * // In case of Array-like object\n * const array = Array.prototype.slice.call(arrayLike); // change to array\n * forEach(array, function(value){\n * sum += value;\n * });\n */\nfunction forEach$4(obj, iteratee, context) {\n if (isArray$2(obj)) {\n forEachArray$2(obj, iteratee, context);\n } else {\n forEachOwnProperties$1(obj, iteratee, context);\n }\n}\n\nvar forEach_1 = forEach$4;\n\n/**\n * @fileoverview Setting element style\n * @author NHN FE Development Lab \n */\n\nvar isString$2 = isString_1;\nvar forEach$3 = forEach_1;\n\n/**\n * Setting element style\n * @param {(HTMLElement|SVGElement)} element - element to setting style\n * @param {(string|object)} key - style prop name or {prop: value} pair object\n * @param {string} [value] - style value\n * @memberof module:domUtil\n */\nfunction css(element, key, value) {\n var style = element.style;\n\n if (isString$2(key)) {\n style[key] = value;\n\n return;\n }\n\n forEach$3(key, function(v, k) {\n style[k] = v;\n });\n}\n\nvar css_1 = css;\n\n/* eslint-disable complexity */\n\nvar isArray$1 = isArray_1;\n\n/**\n * @module array\n */\n\n/**\n * Returns the first index at which a given element can be found in the array\n * from start index(default 0), or -1 if it is not present.\n * It compares searchElement to elements of the Array using strict equality\n * (the same method used by the ===, or triple-equals, operator).\n * @param {*} searchElement Element to locate in the array\n * @param {Array} array Array that will be traversed.\n * @param {number} startIndex Start index in array for searching (default 0)\n * @returns {number} the First index at which a given element, or -1 if it is not present\n * @memberof module:array\n * @example\n * // ES6\n * import inArray from 'tui-code-snippet/array/inArray';\n * \n * // CommonJS\n * const inArray = require('tui-code-snippet/array/inArray');\n *\n * const arr = ['one', 'two', 'three', 'four'];\n * const idx1 = inArray('one', arr, 3); // -1\n * const idx2 = inArray('one', arr); // 0\n */\nfunction inArray$4(searchElement, array, startIndex) {\n var i;\n var length;\n startIndex = startIndex || 0;\n\n if (!isArray$1(array)) {\n return -1;\n }\n\n if (Array.prototype.indexOf) {\n return Array.prototype.indexOf.call(array, searchElement, startIndex);\n }\n\n length = array.length;\n for (i = startIndex; startIndex >= 0 && i < length; i += 1) {\n if (array[i] === searchElement) {\n return i;\n }\n }\n\n return -1;\n}\n\nvar inArray_1 = inArray$4;\n\n/**\n * @fileoverview Check whether the given variable is undefined or not.\n * @author NHN FE Development Lab \n */\n\n/**\n * Check whether the given variable is undefined or not.\n * If the given variable is undefined, returns true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is undefined?\n * @memberof module:type\n */\nfunction isUndefined$4(obj) {\n return obj === undefined; // eslint-disable-line no-undefined\n}\n\nvar isUndefined_1 = isUndefined$4;\n\n/**\n * @fileoverview Get HTML element's design classes.\n * @author NHN FE Development Lab \n */\n\nvar isUndefined$3 = isUndefined_1;\n\n/**\n * Get HTML element's design classes.\n * @param {(HTMLElement|SVGElement)} element target element\n * @returns {string} element css class name\n * @memberof module:domUtil\n */\nfunction getClass$3(element) {\n if (!element || !element.className) {\n return '';\n }\n\n if (isUndefined$3(element.className.baseVal)) {\n return element.className;\n }\n\n return element.className.baseVal;\n}\n\nvar getClass_1 = getClass$3;\n\n/**\n * @fileoverview Set className value\n * @author NHN FE Development Lab \n */\n\nvar isArray = isArray_1;\nvar isUndefined$2 = isUndefined_1;\n\n/**\n * Set className value\n * @param {(HTMLElement|SVGElement)} element - target element\n * @param {(string|string[])} cssClass - class names\n * @private\n */\nfunction setClassName$2(element, cssClass) {\n cssClass = isArray(cssClass) ? cssClass.join(' ') : cssClass;\n\n cssClass = cssClass.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n if (isUndefined$2(element.className.baseVal)) {\n element.className = cssClass;\n\n return;\n }\n\n element.className.baseVal = cssClass;\n}\n\nvar _setClassName = setClassName$2;\n\n/**\n * @fileoverview Add css class to element\n * @author NHN FE Development Lab \n */\n\nvar forEach$2 = forEach_1;\nvar inArray$3 = inArray_1;\nvar getClass$2 = getClass_1;\nvar setClassName$1 = _setClassName;\n\n/**\n * domUtil module\n * @module domUtil\n */\n\n/**\n * Add css class to element\n * @param {(HTMLElement|SVGElement)} element - target element\n * @param {...string} cssClass - css classes to add\n * @memberof module:domUtil\n */\nfunction addClass(element) {\n var cssClass = Array.prototype.slice.call(arguments, 1);\n var classList = element.classList;\n var newClass = [];\n var origin;\n\n if (classList) {\n forEach$2(cssClass, function(name) {\n element.classList.add(name);\n });\n\n return;\n }\n\n origin = getClass$2(element);\n\n if (origin) {\n cssClass = [].concat(origin.split(/\\s+/), cssClass);\n }\n\n forEach$2(cssClass, function(cls) {\n if (inArray$3(cls, newClass) < 0) {\n newClass.push(cls);\n }\n });\n\n setClassName$1(element, newClass);\n}\n\nvar addClass_1 = addClass;\n\n/**\n * @fileoverview Remove css class from element\n * @author NHN FE Development Lab \n */\n\nvar forEachArray$1 = forEachArray_1;\nvar inArray$2 = inArray_1;\nvar getClass$1 = getClass_1;\nvar setClassName = _setClassName;\n\n/**\n * Remove css class from element\n * @param {(HTMLElement|SVGElement)} element - target element\n * @param {...string} cssClass - css classes to remove\n * @memberof module:domUtil\n */\nfunction removeClass(element) {\n var cssClass = Array.prototype.slice.call(arguments, 1);\n var classList = element.classList;\n var origin, newClass;\n\n if (classList) {\n forEachArray$1(cssClass, function(name) {\n classList.remove(name);\n });\n\n return;\n }\n\n origin = getClass$1(element).split(/\\s+/);\n newClass = [];\n forEachArray$1(origin, function(name) {\n if (inArray$2(name, cssClass) < 0) {\n newClass.push(name);\n }\n });\n\n setClassName(element, newClass);\n}\n\nvar removeClass_1 = removeClass;\n\n/**\n * @fileoverview Check whether the given variable is a number or not.\n * @author NHN FE Development Lab \n */\n\n/**\n * Check whether the given variable is a number or not.\n * If the given variable is a number, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is number?\n * @memberof module:type\n */\nfunction isNumber(obj) {\n return typeof obj === 'number' || obj instanceof Number;\n}\n\nvar isNumber_1 = isNumber;\n\n/**\n * @fileoverview Check whether the given variable is null or not.\n * @author NHN FE Development Lab \n */\n\n/**\n * Check whether the given variable is null or not.\n * If the given variable(arguments[0]) is null, returns true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is null?\n * @memberof module:type\n */\nfunction isNull$1(obj) {\n return obj === null;\n}\n\nvar isNull_1 = isNull$1;\n\n/**\n * @fileoverview Request image ping.\n * @author NHN FE Development Lab \n */\n\nvar forEachOwnProperties = forEachOwnProperties_1;\n\n/**\n * @module request\n */\n\n/**\n * Request image ping.\n * @param {String} url url for ping request\n * @param {Object} trackingInfo infos for make query string\n * @returns {HTMLElement}\n * @memberof module:request\n * @example\n * // ES6\n * import imagePing from 'tui-code-snippet/request/imagePing';\n * \n * // CommonJS\n * const imagePing = require('tui-code-snippet/request/imagePing');\n *\n * imagePing('https://www.google-analytics.com/collect', {\n * v: 1,\n * t: 'event',\n * tid: 'trackingid',\n * cid: 'cid',\n * dp: 'dp',\n * dh: 'dh'\n * });\n */\nfunction imagePing$1(url, trackingInfo) {\n var trackingElement = document.createElement('img');\n var queryString = '';\n forEachOwnProperties(trackingInfo, function(value, key) {\n queryString += '&' + key + '=' + value;\n });\n queryString = queryString.substring(1);\n\n trackingElement.src = url + '?' + queryString;\n\n trackingElement.style.display = 'none';\n document.body.appendChild(trackingElement);\n document.body.removeChild(trackingElement);\n\n return trackingElement;\n}\n\nvar imagePing_1 = imagePing$1;\n\n/**\n * @fileoverview Send hostname on DOMContentLoaded.\n * @author NHN FE Development Lab \n */\n\nvar isUndefined$1 = isUndefined_1;\nvar imagePing = imagePing_1;\n\nvar ms7days = 7 * 24 * 60 * 60 * 1000;\n\n/**\n * Check if the date has passed 7 days\n * @param {number} date - milliseconds\n * @returns {boolean}\n * @private\n */\nfunction isExpired(date) {\n var now = new Date().getTime();\n\n return now - date > ms7days;\n}\n\n/**\n * Send hostname on DOMContentLoaded.\n * To prevent hostname set tui.usageStatistics to false.\n * @param {string} appName - application name\n * @param {string} trackingId - GA tracking ID\n * @ignore\n */\nfunction sendHostname(appName, trackingId) {\n var url = 'https://www.google-analytics.com/collect';\n var hostname = location.hostname;\n var hitType = 'event';\n var eventCategory = 'use';\n var applicationKeyForStorage = 'TOAST UI ' + appName + ' for ' + hostname + ': Statistics';\n var date = window.localStorage.getItem(applicationKeyForStorage);\n\n // skip if the flag is defined and is set to false explicitly\n if (!isUndefined$1(window.tui) && window.tui.usageStatistics === false) {\n return;\n }\n\n // skip if not pass seven days old\n if (date && !isExpired(date)) {\n return;\n }\n\n window.localStorage.setItem(applicationKeyForStorage, new Date().getTime());\n\n setTimeout(function() {\n if (document.readyState === 'interactive' || document.readyState === 'complete') {\n imagePing(url, {\n v: 1,\n t: hitType,\n tid: trackingId,\n cid: hostname,\n dp: hostname,\n dh: appName,\n el: appName,\n ec: eventCategory\n });\n }\n }, 1000);\n}\n\nvar sendHostname_1 = sendHostname;\n\n/Mac/.test(navigator.platform);\nvar reSpaceMoreThanOne = /[\\u0020]+/g;\nvar reEscapeChars$1 = /[>(){}[\\]+-.!#|]/g;\nvar reEscapeHTML = /<([a-zA-Z_][a-zA-Z0-9\\-._]*)(\\s|[^\\\\>])*\\/?>|<(\\/)([a-zA-Z_][a-zA-Z0-9\\-._]*)\\s*\\/?>||<([a-zA-Z_][a-zA-Z0-9\\-.:/]*)>/g;\nvar reEscapeBackSlash = /\\\\[!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\\\\]/g;\nvar reEscapePairedChars = /[*_~`]/g;\nvar reMdImageSyntax = /!\\[.*\\]\\(.*\\)/g;\nvar reEscapedCharInLinkSyntax = /[[\\]]/g;\nvar reEscapeBackSlashInSentence = /(?:^|[^\\\\])\\\\(?!\\\\)/g;\nvar XMLSPECIAL$1 = '[&<>\"]';\nvar reXmlSpecial$1 = new RegExp(XMLSPECIAL$1, 'g');\nfunction replaceUnsafeChar$1(char) {\n switch (char) {\n case '&':\n return '&';\n case '<':\n return '<';\n case '>':\n return '>';\n case '\"':\n return '"';\n default:\n return char;\n }\n}\nfunction escapeXml$1(text) {\n if (reXmlSpecial$1.test(text)) {\n return text.replace(reXmlSpecial$1, replaceUnsafeChar$1);\n }\n return text;\n}\nfunction sendHostName() {\n sendHostname_1('editor', 'UA-129966929-1');\n}\nfunction includes(arr, targetItem) {\n return arr.indexOf(targetItem) !== -1;\n}\nvar availableLinkAttributes = ['rel', 'target', 'hreflang', 'type'];\nvar reMarkdownTextToEscapeMap = {\n codeblock: /(^ {4}[^\\n]+\\n*)+/,\n thematicBreak: /^ *((\\* *){3,}|(- *){3,} *|(_ *){3,}) */,\n atxHeading: /^(#{1,6}) +[\\s\\S]+/,\n seTextheading: /^([^\\n]+)\\n *(=|-){2,} */,\n blockquote: /^( *>[^\\n]+.*)+/,\n list: /^ *(\\*+|-+|\\d+\\.) [\\s\\S]+/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? */,\n link: /!?\\[.*\\]\\(.*\\)/,\n reflink: /!?\\[.*\\]\\s*\\[([^\\]]*)\\]/,\n verticalBar: /\\u007C/,\n fencedCodeblock: /^((`|~){3,})/,\n};\nfunction sanitizeLinkAttribute(attribute) {\n if (!attribute) {\n return null;\n }\n var linkAttributes = {};\n availableLinkAttributes.forEach(function (key) {\n if (!isUndefined_1(attribute[key])) {\n linkAttributes[key] = attribute[key];\n }\n });\n return linkAttributes;\n}\nfunction repeat$1(text, count) {\n var result = '';\n for (var i = 0; i < count; i += 1) {\n result += text;\n }\n return result;\n}\nfunction isNeedEscapeText(text) {\n var needEscape = false;\n forEachOwnProperties_1(reMarkdownTextToEscapeMap, function (reMarkdownTextToEscape) {\n if (reMarkdownTextToEscape.test(text)) {\n needEscape = true;\n }\n return !needEscape;\n });\n return needEscape;\n}\nfunction escapeTextForLink(text) {\n var imageSyntaxRanges = [];\n var result = reMdImageSyntax.exec(text);\n while (result) {\n imageSyntaxRanges.push([result.index, result.index + result[0].length]);\n result = reMdImageSyntax.exec(text);\n }\n return text.replace(reEscapedCharInLinkSyntax, function (matched, offset) {\n var isDelimiter = imageSyntaxRanges.some(function (range) { return offset > range[0] && offset < range[1]; });\n return isDelimiter ? matched : \"\\\\\" + matched;\n });\n}\nfunction escape$1(text) {\n var aheadReplacer = function (matched) { return \"\\\\\" + matched; };\n var behindReplacer = function (matched) { return matched + \"\\\\\"; };\n var escapedText = text.replace(reSpaceMoreThanOne, ' ');\n if (reEscapeBackSlash.test(escapedText)) {\n escapedText = escapedText.replace(reEscapeBackSlash, aheadReplacer);\n }\n if (reEscapeBackSlashInSentence.test(escapedText)) {\n escapedText = escapedText.replace(reEscapeBackSlashInSentence, behindReplacer);\n }\n escapedText = escapedText.replace(reEscapePairedChars, aheadReplacer);\n if (reEscapeHTML.test(escapedText)) {\n escapedText = escapedText.replace(reEscapeHTML, aheadReplacer);\n }\n if (isNeedEscapeText(escapedText)) {\n escapedText = escapedText.replace(reEscapeChars$1, aheadReplacer);\n }\n return escapedText;\n}\nfunction quote(text) {\n var result;\n if (text.indexOf('\"') === -1) {\n result = '\"\"';\n }\n else {\n result = text.indexOf(\"'\") === -1 ? \"''\" : '()';\n }\n return result[0] + text + result[1];\n}\nfunction isNil(value) {\n return isNull_1(value) || isUndefined_1(value);\n}\nfunction shallowEqual(o1, o2) {\n if (o1 === null && o1 === o2) {\n return true;\n }\n if (typeof o1 !== 'object' || typeof o2 !== 'object' || isNil(o1) || isNil(o2)) {\n return o1 === o2;\n }\n for (var key in o1) {\n if (o1[key] !== o2[key]) {\n return false;\n }\n }\n for (var key in o2) {\n if (!(key in o1)) {\n return false;\n }\n }\n return true;\n}\nfunction last$1(arr) {\n return arr[arr.length - 1];\n}\nfunction between$1(value, min, max) {\n return value >= min && value <= max;\n}\nfunction isObject$1(obj) {\n return typeof obj === 'object' && obj !== null;\n}\nfunction deepMergedCopy(targetObj, obj) {\n var resultObj = __assign$1({}, targetObj);\n if (targetObj && obj) {\n Object.keys(obj).forEach(function (prop) {\n if (isObject$1(resultObj[prop])) {\n if (Array.isArray(obj[prop])) {\n resultObj[prop] = deepCopyArray(obj[prop]);\n }\n else if (resultObj.hasOwnProperty(prop)) {\n resultObj[prop] = deepMergedCopy(resultObj[prop], obj[prop]);\n }\n else {\n resultObj[prop] = deepCopy(obj[prop]);\n }\n }\n else {\n resultObj[prop] = obj[prop];\n }\n });\n }\n return resultObj;\n}\nfunction deepCopyArray(items) {\n return items.map(function (item) {\n if (isObject$1(item)) {\n return Array.isArray(item) ? deepCopyArray(item) : deepCopy(item);\n }\n return item;\n });\n}\nfunction deepCopy(obj) {\n var keys = Object.keys(obj);\n if (!keys.length) {\n return obj;\n }\n return keys.reduce(function (acc, prop) {\n if (isObject$1(obj[prop])) {\n acc[prop] = Array.isArray(obj[prop]) ? deepCopyArray(obj[prop]) : deepCopy(obj[prop]);\n }\n else {\n acc[prop] = obj[prop];\n }\n return acc;\n }, {});\n}\nfunction assign(targetObj, obj) {\n if (obj === void 0) { obj = {}; }\n Object.keys(obj).forEach(function (prop) {\n if (targetObj.hasOwnProperty(prop) && typeof targetObj[prop] === 'object') {\n if (Array.isArray(obj[prop])) {\n targetObj[prop] = obj[prop];\n }\n else {\n assign(targetObj[prop], obj[prop]);\n }\n }\n else {\n targetObj[prop] = obj[prop];\n }\n });\n return targetObj;\n}\nfunction getSortedNumPair(valueA, valueB) {\n return valueA > valueB ? [valueB, valueA] : [valueA, valueB];\n}\n\n/**\n * @fileoverview Transform the Array-like object to Array.\n * @author NHN FE Development Lab \n */\n\nvar forEachArray = forEachArray_1;\n\n/**\n * Transform the Array-like object to Array.\n * In low IE (below 8), Array.prototype.slice.call is not perfect. So, try-catch statement is used.\n * @param {*} arrayLike Array-like object\n * @returns {Array} Array\n * @memberof module:collection\n * @example\n * // ES6\n * import toArray from 'tui-code-snippet/collection/toArray'; \n * \n * // CommonJS\n * const toArray = require('tui-code-snippet/collection/toArray'); \n *\n * const arrayLike = {\n * 0: 'one',\n * 1: 'two',\n * 2: 'three',\n * 3: 'four',\n * length: 4\n * };\n * const result = toArray(arrayLike);\n *\n * alert(result instanceof Array); // true\n * alert(result); // one,two,three,four\n */\nfunction toArray$1(arrayLike) {\n var arr;\n try {\n arr = Array.prototype.slice.call(arrayLike);\n } catch (e) {\n arr = [];\n forEachArray(arrayLike, function(value) {\n arr.push(value);\n });\n }\n\n return arr;\n}\n\nvar toArray_1 = toArray$1;\n\nfunction createParagraph(schema, content) {\n var paragraph = schema.nodes.paragraph;\n if (!content) {\n return paragraph.createAndFill();\n }\n return paragraph.create(null, isString_1(content) ? schema.text(content) : content);\n}\nfunction createTextNode$1(schema, text, marks) {\n return schema.text(text, marks);\n}\nfunction createTextSelection(tr, from, to) {\n if (to === void 0) { to = from; }\n var contentSize = tr.doc.content.size;\n var size = contentSize > 0 ? contentSize - 1 : 1;\n return TextSelection.create(tr.doc, Math.min(from, size), Math.min(to, size));\n}\nfunction addParagraph(tr, _a, schema) {\n var pos = _a.pos;\n tr.replaceWith(pos, pos, createParagraph(schema));\n return tr.setSelection(createTextSelection(tr, pos + 1));\n}\nfunction replaceTextNode(_a) {\n var state = _a.state, from = _a.from, startIndex = _a.startIndex, endIndex = _a.endIndex, createText = _a.createText;\n var tr = state.tr, doc = state.doc, schema = state.schema;\n for (var i = startIndex; i <= endIndex; i += 1) {\n var _b = doc.child(i), nodeSize = _b.nodeSize, textContent = _b.textContent, content = _b.content;\n var text = createText(textContent);\n var node = text ? createTextNode$1(schema, text) : Fragment.empty;\n var mappedFrom = tr.mapping.map(from);\n var mappedTo = mappedFrom + content.size;\n tr.replaceWith(mappedFrom, mappedTo, node);\n from += nodeSize;\n }\n return tr;\n}\nfunction splitAndExtendBlock(tr, pos, text, node) {\n var textLen = text.length;\n tr.split(pos)\n .delete(pos - textLen, pos)\n .insert(tr.mapping.map(pos), node)\n .setSelection(createTextSelection(tr, tr.mapping.map(pos) - textLen));\n}\n\nfunction getMdStartLine(mdNode) {\n return mdNode.sourcepos[0][0];\n}\nfunction getMdEndLine(mdNode) {\n return mdNode.sourcepos[1][0];\n}\nfunction getMdStartCh(mdNode) {\n return mdNode.sourcepos[0][1];\n}\nfunction getMdEndCh(mdNode) {\n return mdNode.sourcepos[1][1];\n}\nfunction isHTMLNode(mdNode) {\n var type = mdNode.type;\n return type === 'htmlBlock' || type === 'htmlInline';\n}\nfunction isStyledInlineNode(mdNode) {\n var type = mdNode.type;\n return (type === 'strike' ||\n type === 'strong' ||\n type === 'emph' ||\n type === 'code' ||\n type === 'link' ||\n type === 'image');\n}\nfunction isCodeBlockNode(mdNode) {\n return mdNode && mdNode.type === 'codeBlock';\n}\nfunction isListNode$1(mdNode) {\n return mdNode && (mdNode.type === 'item' || mdNode.type === 'list');\n}\nfunction isOrderedListNode(mdNode) {\n return isListNode$1(mdNode) && mdNode.listData.type === 'ordered';\n}\nfunction isBulletListNode(mdNode) {\n return isListNode$1(mdNode) && mdNode.listData.type !== 'ordered';\n}\nfunction isTableCellNode(mdNode) {\n return mdNode && (mdNode.type === 'tableCell' || mdNode.type === 'tableDelimCell');\n}\nfunction isInlineNode$1(mdNode) {\n switch (mdNode.type) {\n case 'code':\n case 'text':\n case 'emph':\n case 'strong':\n case 'strike':\n case 'link':\n case 'image':\n case 'htmlInline':\n case 'linebreak':\n case 'softbreak':\n case 'customInline':\n return true;\n default:\n return false;\n }\n}\nfunction findClosestNode(mdNode, condition, includeSelf) {\n if (includeSelf === void 0) { includeSelf = true; }\n mdNode = includeSelf ? mdNode : mdNode.parent;\n while (mdNode && mdNode.type !== 'document') {\n if (condition(mdNode)) {\n return mdNode;\n }\n mdNode = mdNode.parent;\n }\n return null;\n}\nfunction traverseParentNodes(mdNode, iteratee, includeSelf) {\n if (includeSelf === void 0) { includeSelf = true; }\n mdNode = includeSelf ? mdNode : mdNode.parent;\n while (mdNode && mdNode.type !== 'document') {\n iteratee(mdNode);\n mdNode = mdNode.parent;\n }\n}\nfunction addOffsetPos(originPos, offset) {\n return [originPos[0], originPos[1] + offset];\n}\nfunction setOffsetPos(originPos, newOffset) {\n return [originPos[0], newOffset];\n}\nfunction getInlineMarkdownText(mdNode) {\n var text = mdNode.firstChild.literal;\n switch (mdNode.type) {\n case 'emph':\n return \"*\" + text + \"*\";\n case 'strong':\n return \"**\" + text + \"**\";\n case 'strike':\n return \"~~\" + text + \"~~\";\n case 'code':\n return \"`\" + text + \"`\";\n case 'link':\n case 'image':\n /* eslint-disable no-case-declarations */\n var _a = mdNode, destination = _a.destination, title = _a.title;\n var delim = mdNode.type === 'link' ? '' : '!';\n return delim + \"[\" + text + \"](\" + destination + (title ? \" \\\"\" + title + \"\\\"\" : '') + \")\";\n default:\n return null;\n }\n}\nfunction isContainer$2(node) {\n switch (node.type) {\n case 'document':\n case 'blockQuote':\n case 'list':\n case 'item':\n case 'paragraph':\n case 'heading':\n case 'emph':\n case 'strong':\n case 'strike':\n case 'link':\n case 'image':\n case 'table':\n case 'tableHead':\n case 'tableBody':\n case 'tableRow':\n case 'tableCell':\n case 'tableDelimRow':\n case 'customInline':\n return true;\n default:\n return false;\n }\n}\nfunction getChildrenText$1(node) {\n var buffer = [];\n var walker = node.walker();\n var event = null;\n while ((event = walker.next())) {\n var childNode = event.node;\n if (childNode.type === 'text') {\n buffer.push(childNode.literal);\n }\n }\n return buffer.join('');\n}\n\nvar widgetRules = [];\nvar widgetRuleMap = {};\nvar reWidgetPrefix = /\\$\\$widget\\d+\\s/;\nfunction unwrapWidgetSyntax(text) {\n var index = text.search(reWidgetPrefix);\n if (index !== -1) {\n var rest = text.substring(index);\n var replaced = rest.replace(reWidgetPrefix, '').replace('$$', '');\n text = text.substring(0, index);\n text += unwrapWidgetSyntax(replaced);\n }\n return text;\n}\nfunction createWidgetContent(info, text) {\n return \"$$\" + info + \" \" + text + \"$$\";\n}\nfunction widgetToDOM(info, text) {\n var _a = widgetRuleMap[info], rule = _a.rule, toDOM = _a.toDOM;\n var matches = unwrapWidgetSyntax(text).match(rule);\n if (matches) {\n text = matches[0];\n }\n return toDOM(text);\n}\nfunction getWidgetRules() {\n return widgetRules;\n}\nfunction setWidgetRules(rules) {\n widgetRules = rules;\n widgetRules.forEach(function (rule, index) {\n widgetRuleMap[\"widget\" + index] = rule;\n });\n}\nfunction mergeNodes(nodes, text, schema, ruleIndex) {\n return nodes.concat(createNodesWithWidget(text, schema, ruleIndex));\n}\n/**\n * create nodes with plain text and replace text matched to the widget rules with the widget node\n * For example, in case the text and widget rules as below\n *\n * text: $test plain text #test\n * widget rules: [{ rule: /$.+/ }, { rule: /#.+/ }]\n *\n * The creating node process is recursive and is as follows.\n *\n * in first widget rule(/$.+/)\n * $test -> widget node\n * plain text -> match with next widget rule\n * #test -> match with next widget rule\n *\n * in second widget rule(/#.+/)\n * plain text -> text node(no rule for matching)\n * #test -> widget node\n */\nfunction createNodesWithWidget(text, schema, ruleIndex) {\n if (ruleIndex === void 0) { ruleIndex = 0; }\n var nodes = [];\n var rule = (widgetRules[ruleIndex] || {}).rule;\n var nextRuleIndex = ruleIndex + 1;\n text = unwrapWidgetSyntax(text);\n if (rule && rule.test(text)) {\n var index = void 0;\n while ((index = text.search(rule)) !== -1) {\n var prev = text.substring(0, index);\n // get widget node on first splitted text using next widget rule\n if (prev) {\n nodes = mergeNodes(nodes, prev, schema, nextRuleIndex);\n }\n // build widget node using current widget rule\n text = text.substring(index);\n var literal = text.match(rule)[0];\n var info = \"widget\" + ruleIndex;\n nodes.push(schema.nodes.widget.create({ info: info }, schema.text(createWidgetContent(info, literal))));\n text = text.substring(literal.length);\n }\n // get widget node on last splitted text using next widget rule\n if (text) {\n nodes = mergeNodes(nodes, text, schema, nextRuleIndex);\n }\n }\n else if (text) {\n nodes =\n ruleIndex < widgetRules.length - 1\n ? mergeNodes(nodes, text, schema, nextRuleIndex)\n : [schema.text(text)];\n }\n return nodes;\n}\nfunction getWidgetContent(widgetNode) {\n var event;\n var text = '';\n var walker = widgetNode.walker();\n while ((event = walker.next())) {\n var node = event.node, entering = event.entering;\n if (entering) {\n if (node !== widgetNode && node.type !== 'text') {\n text += getInlineMarkdownText(node);\n // skip the children\n walker.resumeAt(widgetNode, false);\n walker.next();\n }\n else if (node.type === 'text') {\n text += node.literal;\n }\n }\n }\n return text;\n}\n\nfunction getDefaultCommands() {\n return {\n deleteSelection: function () { return deleteSelection; },\n selectAll: function () { return selectAll; },\n undo: function () { return undo; },\n redo: function () { return redo; },\n };\n}\n\nfunction placeholder(options) {\n return new Plugin({\n props: {\n decorations: function (state) {\n var doc = state.doc;\n if (options.text &&\n doc.childCount === 1 &&\n doc.firstChild.isTextblock &&\n doc.firstChild.content.size === 0) {\n var placeHolder = document.createElement('span');\n addClass_1(placeHolder, 'placeholder');\n if (options.className) {\n addClass_1(placeHolder, options.className);\n }\n placeHolder.textContent = options.text;\n return DecorationSet.create(doc, [Decoration.widget(1, placeHolder)]);\n }\n return null;\n },\n },\n });\n}\n\n/**\n * @fileoverview Check element has specific css class\n * @author NHN FE Development Lab \n */\n\nvar inArray$1 = inArray_1;\nvar getClass = getClass_1;\n\n/**\n * Check element has specific css class\n * @param {(HTMLElement|SVGElement)} element - target element\n * @param {string} cssClass - css class\n * @returns {boolean}\n * @memberof module:domUtil\n */\nfunction hasClass(element, cssClass) {\n var origin;\n\n if (element.classList) {\n return element.classList.contains(cssClass);\n }\n\n origin = getClass(element).split(/\\s+/);\n\n return inArray$1(cssClass, origin) > -1;\n}\n\nvar hasClass_1 = hasClass;\n\n/**\n * @fileoverview Check element match selector\n * @author NHN FE Development Lab \n */\n\nvar inArray = inArray_1;\nvar toArray = toArray_1;\n\nvar elProto = Element.prototype;\nvar matchSelector = elProto.matches ||\n elProto.webkitMatchesSelector ||\n elProto.mozMatchesSelector ||\n elProto.msMatchesSelector ||\n function(selector) {\n var doc = this.document || this.ownerDocument;\n\n return inArray(this, toArray(doc.querySelectorAll(selector))) > -1;\n };\n\n/**\n * Check element match selector\n * @param {HTMLElement} element - element to check\n * @param {string} selector - selector to check\n * @returns {boolean} is selector matched to element?\n * @memberof module:domUtil\n */\nfunction matches(element, selector) {\n return matchSelector.call(element, selector);\n}\n\nvar matches_1 = matches;\n\nvar TAG_NAME = '[A-Za-z][A-Za-z0-9-]*';\nvar ATTRIBUTE_NAME = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar UNQUOTED_VALUE = '[^\"\\'=<>`\\\\x00-\\\\x20]+';\nvar SINGLE_QUOTED_VALUE = \"'[^']*'\";\nvar DOUBLE_QUOTED_VALUE = '\"[^\"]*\"';\nvar ATTRIBUTE_VALUE = \"(?:\" + UNQUOTED_VALUE + \"|\" + SINGLE_QUOTED_VALUE + \"|\" + DOUBLE_QUOTED_VALUE + \")\";\nvar ATTRIBUTE_VALUE_SPEC = \"\" + '(?:\\\\s*=\\\\s*' + ATTRIBUTE_VALUE + \")\";\nvar ATTRIBUTE$1 = \"\" + '(?:\\\\s+' + ATTRIBUTE_NAME + ATTRIBUTE_VALUE_SPEC + \"?)\";\nvar OPEN_TAG = \"<(\" + TAG_NAME + \")(\" + ATTRIBUTE$1 + \")*\\\\s*/?>\";\nvar CLOSE_TAG = \"]\";\nvar HTML_TAG = \"(?:\" + OPEN_TAG + \"|\" + CLOSE_TAG + \")\";\nvar reHTMLTag = new RegExp(\"^\" + HTML_TAG, 'i');\nvar reBR = //i;\nvar reHTMLComment = /|/;\nvar ALTERNATIVE_TAG_FOR_BR = '

';\n\nfunction isPositionInBox(style, offsetX, offsetY) {\n var left = parseInt(style.left, 10);\n var top = parseInt(style.top, 10);\n var width = parseInt(style.width, 10) + parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);\n var height = parseInt(style.height, 10) + parseInt(style.paddingTop, 10) + parseInt(style.paddingBottom, 10);\n return offsetX >= left && offsetX <= left + width && offsetY >= top && offsetY <= top + height;\n}\nvar CLS_PREFIX = 'toastui-editor-';\nfunction cls() {\n var names = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n names[_i] = arguments[_i];\n }\n var result = [];\n for (var _a = 0, names_1 = names; _a < names_1.length; _a++) {\n var name_1 = names_1[_a];\n var className = void 0;\n if (Array.isArray(name_1)) {\n className = name_1[0] ? name_1[1] : null;\n }\n else {\n className = name_1;\n }\n if (className) {\n result.push(\"\" + CLS_PREFIX + className);\n }\n }\n return result.join(' ');\n}\nfunction clsWithMdPrefix() {\n var names = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n names[_i] = arguments[_i];\n }\n return names.map(function (className) { return CLS_PREFIX + \"md-\" + className; }).join(' ');\n}\nfunction isTextNode(node) {\n return (node === null || node === void 0 ? void 0 : node.nodeType) === Node.TEXT_NODE;\n}\nfunction isElemNode(node) {\n return node && node.nodeType === Node.ELEMENT_NODE;\n}\nfunction findNodes(element, selector) {\n var nodeList = toArray_1(element.querySelectorAll(selector));\n if (nodeList.length) {\n return nodeList;\n }\n return [];\n}\nfunction appendNodes(node, nodesToAppend) {\n nodesToAppend = isArray_1(nodesToAppend) ? toArray_1(nodesToAppend) : [nodesToAppend];\n nodesToAppend.forEach(function (nodeToAppend) {\n node.appendChild(nodeToAppend);\n });\n}\nfunction insertBeforeNode(insertedNode, node) {\n if (node.parentNode) {\n node.parentNode.insertBefore(insertedNode, node);\n }\n}\nfunction removeNode$1(node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nfunction unwrapNode(node) {\n var result = [];\n while (node.firstChild) {\n result.push(node.firstChild);\n if (node.parentNode) {\n node.parentNode.insertBefore(node.firstChild, node);\n }\n }\n removeNode$1(node);\n return result;\n}\nfunction toggleClass(element, className, state) {\n if (isUndefined_1(state)) {\n state = !hasClass_1(element, className);\n }\n var toggleFn = state ? addClass_1 : removeClass_1;\n toggleFn(element, className);\n}\nfunction createElementWith(contents, target) {\n var container = document.createElement('div');\n if (isString_1(contents)) {\n container.innerHTML = contents;\n }\n else {\n container.appendChild(contents);\n }\n var firstChild = container.firstChild;\n if (target) {\n target.appendChild(firstChild);\n }\n return firstChild;\n}\nfunction getOuterWidth(el) {\n var computed = window.getComputedStyle(el);\n return (['margin-left', 'margin-right'].reduce(function (acc, type) { return acc + parseInt(computed.getPropertyValue(type), 10); }, 0) + el.offsetWidth);\n}\nfunction closest(node, found) {\n var condition;\n if (isString_1(found)) {\n condition = function (target) { return matches_1(target, found); };\n }\n else {\n condition = function (target) { return target === found; };\n }\n while (node && node !== document) {\n if (isElemNode(node) && condition(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n}\nfunction getTotalOffset(el, root) {\n var offsetTop = 0;\n var offsetLeft = 0;\n while (el && el !== root) {\n var top_1 = el.offsetTop, left = el.offsetLeft, offsetParent = el.offsetParent;\n offsetTop += top_1;\n offsetLeft += left;\n if (offsetParent === root.offsetParent) {\n break;\n }\n el = el.offsetParent;\n }\n return { offsetTop: offsetTop, offsetLeft: offsetLeft };\n}\nfunction setAttributes(attributes, element) {\n Object.keys(attributes).forEach(function (attrName) {\n if (isNil(attributes[attrName])) {\n element.removeAttribute(attrName);\n }\n else {\n element.setAttribute(attrName, attributes[attrName]);\n }\n });\n}\nfunction replaceBRWithEmptyBlock(html) {\n // remove br in paragraph to compatible with markdown\n var replacedHTML = html.replace(/

<\\/p>/gi, '

');\n var reHTMLTag = new RegExp(HTML_TAG, 'ig');\n var htmlTagMatched = replacedHTML.match(reHTMLTag);\n htmlTagMatched === null || htmlTagMatched === void 0 ? void 0 : htmlTagMatched.forEach(function (htmlTag, index) {\n if (reBR.test(htmlTag)) {\n var alternativeTag = ALTERNATIVE_TAG_FOR_BR;\n if (index) {\n var prevTag = htmlTagMatched[index - 1];\n var openTagMatched = prevTag.match(OPEN_TAG);\n if (openTagMatched && !/br/i.test(openTagMatched[1])) {\n var tagName = openTagMatched[1];\n alternativeTag = \"<\" + tagName + \">\";\n }\n }\n replacedHTML = replacedHTML.replace(reBR, alternativeTag);\n }\n });\n return replacedHTML;\n}\nfunction removeProseMirrorHackNodes(html) {\n var reProseMirrorImage = /\"\"/g;\n var reProseMirrorTrailingBreak = / class=\"ProseMirror-trailingBreak\"/g;\n var resultHTML = html;\n resultHTML = resultHTML.replace(reProseMirrorImage, '');\n resultHTML = resultHTML.replace(reProseMirrorTrailingBreak, '');\n return resultHTML;\n}\n\nvar pluginKey$1 = new PluginKey('widget');\nvar MARGIN = 5;\nvar PopupWidget = /** @class */ (function () {\n function PopupWidget(view, eventEmitter) {\n var _this = this;\n this.popup = null;\n this.removeWidget = function () {\n if (_this.popup) {\n _this.rootEl.removeChild(_this.popup);\n _this.popup = null;\n }\n };\n this.rootEl = view.dom.parentElement;\n this.eventEmitter = eventEmitter;\n this.eventEmitter.listen('blur', this.removeWidget);\n this.eventEmitter.listen('loadUI', function () {\n _this.rootEl = closest(view.dom.parentElement, \".\" + cls('defaultUI'));\n });\n this.eventEmitter.listen('removePopupWidget', this.removeWidget);\n }\n PopupWidget.prototype.update = function (view) {\n var widget = pluginKey$1.getState(view.state);\n this.removeWidget();\n if (widget) {\n var node = widget.node, style = widget.style;\n var _a = view.coordsAtPos(widget.pos), top_1 = _a.top, left = _a.left, bottom = _a.bottom;\n var height = bottom - top_1;\n var rect = this.rootEl.getBoundingClientRect();\n var relTopPos = top_1 - rect.top;\n css_1(node, { opacity: '0' });\n this.rootEl.appendChild(node);\n css_1(node, {\n position: 'absolute',\n left: left - rect.left + MARGIN + \"px\",\n top: (style === 'bottom' ? relTopPos + height - MARGIN : relTopPos - height) + \"px\",\n opacity: '1',\n });\n this.popup = node;\n view.focus();\n }\n };\n PopupWidget.prototype.destroy = function () {\n this.eventEmitter.removeEventHandler('blur', this.removeWidget);\n };\n return PopupWidget;\n}());\nfunction addWidget(eventEmitter) {\n return new Plugin({\n key: pluginKey$1,\n state: {\n init: function () {\n return null;\n },\n apply: function (tr) {\n return tr.getMeta('widget');\n },\n },\n view: function (editorView) {\n return new PopupWidget(editorView, eventEmitter);\n },\n });\n}\n\nfunction addDefaultImageBlobHook(eventEmitter) {\n eventEmitter.listen('addImageBlobHook', function (blob, callback) {\n var reader = new FileReader();\n reader.onload = function (_a) {\n var target = _a.target;\n return callback(target.result);\n };\n reader.readAsDataURL(blob);\n });\n}\nfunction emitImageBlobHook(eventEmitter, blob, type) {\n var hook = function (imageUrl, altText) {\n eventEmitter.emit('command', 'addImage', {\n imageUrl: imageUrl,\n altText: altText || blob.name || 'image',\n });\n };\n eventEmitter.emit('addImageBlobHook', blob, hook, type);\n}\nfunction pasteImageOnly(items) {\n var images = toArray_1(items).filter(function (_a) {\n var type = _a.type;\n return type.indexOf('image') !== -1;\n });\n if (images.length === 1) {\n var item = images[0];\n if (item) {\n return item.getAsFile();\n }\n }\n return null;\n}\n\nfunction dropImage(_a) {\n var eventEmitter = _a.eventEmitter;\n return new Plugin({\n props: {\n handleDOMEvents: {\n drop: function (_, ev) {\n var _a;\n var items = (_a = ev.dataTransfer) === null || _a === void 0 ? void 0 : _a.files;\n if (items) {\n forEachArray_1(items, function (item) {\n if (item.type.indexOf('image') !== -1) {\n ev.preventDefault();\n ev.stopPropagation();\n emitImageBlobHook(eventEmitter, item, ev.type);\n return false;\n }\n return true;\n });\n }\n return true;\n },\n },\n },\n });\n}\n\nvar Node$2 = /** @class */ (function () {\n function Node() {\n }\n Object.defineProperty(Node.prototype, \"type\", {\n get: function () {\n return 'node';\n },\n enumerable: false,\n configurable: true\n });\n Node.prototype.setContext = function (context) {\n this.context = context;\n };\n return Node;\n}());\n\nfunction widgetNodeView(pmNode) {\n var dom = document.createElement('span');\n var node = widgetToDOM(pmNode.attrs.info, pmNode.textContent);\n dom.className = 'tui-widget';\n dom.appendChild(node);\n return { dom: dom };\n}\nfunction isWidgetNode(pmNode) {\n return pmNode.type.name === 'widget';\n}\nvar Widget = /** @class */ (function (_super) {\n __extends$1(Widget, _super);\n function Widget() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Widget.prototype, \"name\", {\n get: function () {\n return 'widget';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Widget.prototype, \"schema\", {\n get: function () {\n return {\n attrs: {\n info: { default: null },\n },\n group: 'inline',\n inline: true,\n content: 'text*',\n selectable: false,\n atom: true,\n toDOM: function () {\n return ['span', { class: 'tui-widget' }, 0];\n },\n parseDOM: [\n {\n tag: 'span.tui-widget',\n getAttrs: function (dom) {\n var text = dom.textContent;\n var _a = text.match(/\\$\\$(widget\\d+)/), info = _a[1];\n return { info: info };\n },\n },\n ],\n };\n },\n enumerable: false,\n configurable: true\n });\n return Widget;\n}(Node$2));\n\nvar EditorBase = /** @class */ (function () {\n function EditorBase(eventEmitter) {\n this.timer = null;\n this.el = document.createElement('div');\n this.el.className = 'toastui-editor';\n this.eventEmitter = eventEmitter;\n this.placeholder = { text: '' };\n }\n EditorBase.prototype.createState = function () {\n return EditorState.create({\n schema: this.schema,\n plugins: this.createPlugins(),\n });\n };\n EditorBase.prototype.initEvent = function () {\n var _a = this, eventEmitter = _a.eventEmitter, view = _a.view, editorType = _a.editorType;\n view.dom.addEventListener('focus', function () { return eventEmitter.emit('focus', editorType); });\n view.dom.addEventListener('blur', function () { return eventEmitter.emit('blur', editorType); });\n };\n EditorBase.prototype.emitChangeEvent = function (tr) {\n this.eventEmitter.emit('caretChange', this.editorType);\n if (tr.docChanged) {\n this.eventEmitter.emit('change', this.editorType);\n }\n };\n Object.defineProperty(EditorBase.prototype, \"defaultPlugins\", {\n get: function () {\n var rules = this.createInputRules();\n var plugins = __spreadArray$1(__spreadArray$1([], this.keymaps), [\n keymap(__assign$1({ 'Shift-Enter': baseKeymap.Enter }, baseKeymap)),\n history(),\n placeholder(this.placeholder),\n addWidget(this.eventEmitter),\n dropImage(this.context),\n ]);\n return rules ? plugins.concat(rules) : plugins;\n },\n enumerable: false,\n configurable: true\n });\n EditorBase.prototype.createInputRules = function () {\n var widgetRules = getWidgetRules();\n var rules = widgetRules.map(function (_a) {\n var rule = _a.rule;\n return new InputRule(rule, function (state, match, start, end) {\n var schema = state.schema, tr = state.tr, doc = state.doc;\n var allMatched = match.input.match(new RegExp(rule, 'g'));\n var pos = doc.resolve(start);\n var parent = pos.parent;\n var count = 0;\n if (isWidgetNode(parent)) {\n parent = pos.node(pos.depth - 1);\n }\n parent.forEach(function (child) { return isWidgetNode(child) && (count += 1); });\n // replace the content only if the count of matched rules in whole text is greater than current widget node count\n if (allMatched.length > count) {\n var content = last$1(allMatched);\n var nodes = createNodesWithWidget(content, schema);\n // adjust start position based on widget content\n return tr.replaceWith(end - content.length + 1, end, nodes);\n }\n return null;\n });\n });\n return rules.length ? inputRules({ rules: rules }) : null;\n };\n EditorBase.prototype.clearTimer = function () {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n };\n EditorBase.prototype.createSchema = function () {\n return new Schema({\n nodes: this.specs.nodes,\n marks: this.specs.marks,\n });\n };\n EditorBase.prototype.createKeymaps = function (useCommandShortcut) {\n var _a = getDefaultCommands(), undo = _a.undo, redo = _a.redo;\n var allKeymaps = this.specs.keymaps(useCommandShortcut);\n var historyKeymap = {\n 'Mod-z': undo(),\n 'Shift-Mod-z': redo(),\n };\n return useCommandShortcut ? allKeymaps.concat(keymap(historyKeymap)) : allKeymaps;\n };\n EditorBase.prototype.createCommands = function () {\n return this.specs.commands(this.view);\n };\n EditorBase.prototype.createPluginProps = function () {\n var _this = this;\n return this.extraPlugins.map(function (plugin) { return plugin(_this.eventEmitter); });\n };\n EditorBase.prototype.focus = function () {\n var _this = this;\n this.clearTimer();\n // prevent the error for IE11\n this.timer = setTimeout(function () {\n _this.view.focus();\n _this.view.dispatch(_this.view.state.tr.scrollIntoView());\n });\n };\n EditorBase.prototype.blur = function () {\n this.view.dom.blur();\n };\n EditorBase.prototype.destroy = function () {\n var _this = this;\n this.clearTimer();\n this.view.destroy();\n Object.keys(this).forEach(function (prop) {\n delete _this[prop];\n });\n };\n EditorBase.prototype.moveCursorToStart = function (focus) {\n var tr = this.view.state.tr;\n this.view.dispatch(tr.setSelection(createTextSelection(tr, 1)).scrollIntoView());\n if (focus) {\n this.focus();\n }\n };\n EditorBase.prototype.moveCursorToEnd = function (focus) {\n var tr = this.view.state.tr;\n this.view.dispatch(tr.setSelection(createTextSelection(tr, tr.doc.content.size - 1)).scrollIntoView());\n if (focus) {\n this.focus();\n }\n };\n EditorBase.prototype.setScrollTop = function (top) {\n this.view.dom.scrollTop = top;\n };\n EditorBase.prototype.getScrollTop = function () {\n return this.view.dom.scrollTop;\n };\n EditorBase.prototype.setPlaceholder = function (text) {\n this.placeholder.text = text;\n this.view.dispatch(this.view.state.tr.scrollIntoView());\n };\n EditorBase.prototype.setHeight = function (height) {\n css_1(this.el, { height: height + \"px\" });\n };\n EditorBase.prototype.setMinHeight = function (minHeight) {\n css_1(this.el, { minHeight: minHeight + \"px\" });\n };\n EditorBase.prototype.getElement = function () {\n return this.el;\n };\n return EditorBase;\n}());\n\n/**\n * @fileoverview Check whether the given variable is a function or not.\n * @author NHN FE Development Lab \n */\n\n/**\n * Check whether the given variable is a function or not.\n * If the given variable is a function, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is function?\n * @memberof module:type\n */\nfunction isFunction(obj) {\n return obj instanceof Function;\n}\n\nvar isFunction_1 = isFunction;\n\nvar defaultCommandShortcuts = [\n 'Enter',\n 'Shift-Enter',\n 'Mod-Enter',\n 'Tab',\n 'Shift-Tab',\n 'Delete',\n 'Backspace',\n 'Mod-Delete',\n 'Mod-Backspace',\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'Mod-d',\n 'Mod-D',\n 'Alt-ArrowUp',\n 'Alt-ArrowDown',\n];\nfunction execCommand(view, command, payload) {\n view.focus();\n return command(payload)(view.state, view.dispatch, view);\n}\nvar SpecManager = /** @class */ (function () {\n function SpecManager(specs) {\n this.specs = specs;\n }\n Object.defineProperty(SpecManager.prototype, \"nodes\", {\n get: function () {\n return this.specs\n .filter(function (spec) { return spec.type === 'node'; })\n .reduce(function (nodes, _a) {\n var _b;\n var name = _a.name, schema = _a.schema;\n return __assign$1(__assign$1({}, nodes), (_b = {}, _b[name] = schema, _b));\n }, {});\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SpecManager.prototype, \"marks\", {\n get: function () {\n return this.specs\n .filter(function (spec) { return spec.type === 'mark'; })\n .reduce(function (marks, _a) {\n var _b;\n var name = _a.name, schema = _a.schema;\n return __assign$1(__assign$1({}, marks), (_b = {}, _b[name] = schema, _b));\n }, {});\n },\n enumerable: false,\n configurable: true\n });\n SpecManager.prototype.commands = function (view, addedCommands) {\n var specCommands = this.specs\n .filter(function (_a) {\n var commands = _a.commands;\n return commands;\n })\n .reduce(function (allCommands, spec) {\n var commands = {};\n var specCommand = spec.commands();\n if (isFunction_1(specCommand)) {\n commands[spec.name] = function (payload) { return execCommand(view, specCommand, payload); };\n }\n else {\n Object.keys(specCommand).forEach(function (name) {\n commands[name] = function (payload) { return execCommand(view, specCommand[name], payload); };\n });\n }\n return __assign$1(__assign$1({}, allCommands), commands);\n }, {});\n var defaultCommands = getDefaultCommands();\n Object.keys(defaultCommands).forEach(function (name) {\n specCommands[name] = function (payload) { return execCommand(view, defaultCommands[name], payload); };\n });\n if (addedCommands) {\n Object.keys(addedCommands).forEach(function (name) {\n specCommands[name] = function (payload) { return execCommand(view, addedCommands[name], payload); };\n });\n }\n return specCommands;\n };\n SpecManager.prototype.keymaps = function (useCommandShortcut) {\n var specKeymaps = this.specs.filter(function (spec) { return spec.keymaps; }).map(function (spec) { return spec.keymaps(); });\n return specKeymaps.map(function (keys) {\n if (!useCommandShortcut) {\n Object.keys(keys).forEach(function (key) {\n if (!includes(defaultCommandShortcuts, key)) {\n delete keys[key];\n }\n });\n }\n return keymap(keys);\n });\n };\n SpecManager.prototype.setContext = function (context) {\n this.specs.forEach(function (spec) {\n spec.setContext(context);\n });\n };\n return SpecManager;\n}());\n\nfunction resolveSelectionPos(selection) {\n var from = selection.from, to = selection.to;\n if (selection instanceof AllSelection) {\n return [from + 1, to - 1];\n }\n return [from, to];\n}\nfunction getMdLine(resolvedPos) {\n return resolvedPos.index(0) + 1;\n}\nfunction getWidgetNodePos(node, chPos, direction) {\n if (direction === void 0) { direction = 1; }\n var additionalPos = 0;\n node.forEach(function (child, pos) {\n // add or subtract widget node tag\n if (isWidgetNode(child) && pos + 2 < chPos) {\n additionalPos += 2 * direction;\n }\n });\n return additionalPos;\n}\nfunction getEditorToMdPos(doc, from, to) {\n if (to === void 0) { to = from; }\n var collapsed = from === to;\n var startResolvedPos = doc.resolve(from);\n var startLine = getMdLine(startResolvedPos);\n var endLine = startLine;\n var startOffset = startResolvedPos.start(1);\n var endOffset = startOffset;\n if (!collapsed) {\n // prevent the end offset from pointing to the root document position\n var endResolvedPos = doc.resolve(to === doc.content.size ? to - 1 : to);\n endOffset = endResolvedPos.start(1);\n endLine = getMdLine(endResolvedPos);\n // To resolve the end offset excluding document tag size\n if (endResolvedPos.pos === doc.content.size) {\n to = doc.content.size - 2;\n }\n }\n var startCh = Math.max(from - startOffset + 1, 1);\n var endCh = Math.max(to - endOffset + 1, 1);\n return [\n [startLine, startCh + getWidgetNodePos(doc.child(startLine - 1), startCh, -1)],\n [endLine, endCh + getWidgetNodePos(doc.child(endLine - 1), endCh, -1)],\n ];\n}\nfunction getStartPosListPerLine(doc, endIndex) {\n var startPosListPerLine = [];\n for (var i = 0, pos = 0; i < endIndex; i += 1) {\n var child = doc.child(i);\n startPosListPerLine[i] = pos;\n pos += child.nodeSize;\n }\n return startPosListPerLine;\n}\nfunction getMdToEditorPos(doc, startPos, endPos) {\n var startPosListPerLine = getStartPosListPerLine(doc, endPos[0]);\n var startIndex = startPos[0] - 1;\n var endIndex = endPos[0] - 1;\n var startNode = doc.child(startIndex);\n var endNode = doc.child(endIndex);\n // calculate the position corresponding to the line\n var from = startPosListPerLine[startIndex];\n var to = startPosListPerLine[endIndex];\n // calculate the position corresponding to the character offset of the line\n from += startPos[1] + getWidgetNodePos(startNode, startPos[1] - 1);\n to += endPos[1] + getWidgetNodePos(endNode, endPos[1] - 1);\n return [from, Math.min(to, doc.content.size)];\n}\nfunction getRangeInfo(selection) {\n var $from = selection.$from, $to = selection.$to;\n var from = selection.from, to = selection.to;\n var doc = $from.doc;\n if (selection instanceof AllSelection) {\n $from = doc.resolve(from + 1);\n $to = doc.resolve(to - 1);\n }\n if ($from.depth === 0) {\n $from = doc.resolve(from - 1);\n $to = $from;\n }\n return {\n startFromOffset: $from.start(1),\n endFromOffset: $to.start(1),\n startToOffset: $from.end(1),\n endToOffset: $to.end(1),\n startIndex: $from.index(0),\n endIndex: $to.index(0),\n from: $from.pos,\n to: $to.pos,\n };\n}\nfunction getNodeContentOffsetRange(doc, targetIndex) {\n var startOffset = 1;\n var endOffset = 1;\n for (var i = 0, offset = 0; i < doc.childCount; i += 1) {\n var nodeSize = doc.child(i).nodeSize;\n // calculate content start, end offset(not node offset)\n startOffset = offset + 1;\n endOffset = offset + nodeSize - 1;\n if (i === targetIndex) {\n break;\n }\n offset += nodeSize;\n }\n return { startOffset: startOffset, endOffset: endOffset };\n}\n\nvar HEADING = 'heading';\nvar BLOCK_QUOTE = 'blockQuote';\nvar LIST_ITEM = 'listItem';\nvar TABLE = 'table';\nvar TABLE_CELL = 'tableCell';\nvar CODE_BLOCK = 'codeBlock';\nvar THEMATIC_BREAK = 'thematicBreak';\nvar LINK = 'link';\nvar CODE = 'code';\nvar META = 'meta';\nvar DELIM = 'delimiter';\nvar TASK_DELIM = 'taskDelimiter';\nvar TEXT = 'markedText';\nvar HTML = 'html';\nvar CUSTOM_BLOCK = 'customBlock';\nvar delimSize = {\n strong: 2,\n emph: 1,\n strike: 2,\n};\nfunction markInfo(start, end, type, attrs) {\n return { start: start, end: end, spec: { type: type, attrs: attrs } };\n}\nfunction heading$1(_a, start, end) {\n var level = _a.level, headingType = _a.headingType;\n var marks = [markInfo(start, end, HEADING, { level: level })];\n if (headingType === 'atx') {\n marks.push(markInfo(start, addOffsetPos(start, level), DELIM));\n }\n else {\n marks.push(markInfo(setOffsetPos(end, 0), end, HEADING, { seText: true }));\n }\n return marks;\n}\nfunction emphasisAndStrikethrough(_a, start, end) {\n var type = _a.type;\n var startDelimPos = addOffsetPos(start, delimSize[type]);\n var endDelimPos = addOffsetPos(end, -delimSize[type]);\n return [\n markInfo(startDelimPos, endDelimPos, type),\n markInfo(start, startDelimPos, DELIM),\n markInfo(endDelimPos, end, DELIM),\n ];\n}\nfunction markLink(start, end, linkTextStart, lastChildCh) {\n return [\n markInfo(start, end, LINK),\n markInfo(setOffsetPos(start, linkTextStart[1] + 1), setOffsetPos(end, lastChildCh), LINK, {\n desc: true,\n }),\n markInfo(setOffsetPos(end, lastChildCh + 2), addOffsetPos(end, -1), LINK, { url: true }),\n ];\n}\nfunction image$1(_a, start, end) {\n var lastChild = _a.lastChild;\n var lastChildCh = lastChild ? getMdEndCh(lastChild) + 1 : 3; // 3: length of '![]'\n var linkTextEnd = addOffsetPos(start, 1);\n return __spreadArray$1([markInfo(start, linkTextEnd, META)], markLink(start, end, linkTextEnd, lastChildCh));\n}\nfunction link(_a, start, end) {\n var lastChild = _a.lastChild, extendedAutolink = _a.extendedAutolink;\n var lastChildCh = lastChild ? getMdEndCh(lastChild) + 1 : 2; // 2: length of '[]'\n return extendedAutolink\n ? [markInfo(start, end, LINK, { desc: true })]\n : markLink(start, end, start, lastChildCh);\n}\nfunction code(_a, start, end) {\n var tickCount = _a.tickCount;\n var openDelimEnd = addOffsetPos(start, tickCount);\n var closeDelimStart = addOffsetPos(end, -tickCount);\n return [\n markInfo(start, end, CODE),\n markInfo(start, openDelimEnd, CODE, { start: true }),\n markInfo(openDelimEnd, closeDelimStart, CODE, { marked: true }),\n markInfo(closeDelimStart, end, CODE, { end: true }),\n ];\n}\nfunction lineBackground(parent, start, end, prefix) {\n var defaultBackground = {\n start: start,\n end: end,\n spec: {\n attrs: { className: prefix + \"-line-background\", codeStart: start[0], codeEnd: end[0] },\n },\n lineBackground: true,\n };\n return parent.type !== 'item' && parent.type !== 'blockQuote'\n ? [\n __assign$1(__assign$1({}, defaultBackground), { end: start, spec: { attrs: { className: prefix + \"-line-background start\" } } }),\n __assign$1(__assign$1({}, defaultBackground), { start: [Math.min(start[0] + 1, end[0]), start[1]] }),\n ]\n : null;\n}\nfunction codeBlock$1(node, start, end, endLine) {\n var fenceOffset = node.fenceOffset, fenceLength = node.fenceLength, fenceChar = node.fenceChar, info = node.info, infoPadding = node.infoPadding, parent = node.parent;\n var fenceEnd = fenceOffset + fenceLength;\n var marks = [markInfo(setOffsetPos(start, 1), end, CODE_BLOCK)];\n if (fenceChar) {\n marks.push(markInfo(start, addOffsetPos(start, fenceEnd), DELIM));\n }\n if (info) {\n marks.push(markInfo(addOffsetPos(start, fenceLength), addOffsetPos(start, fenceLength + infoPadding + info.length), META));\n }\n var codeBlockEnd = \"^(\\\\s{0,4})(\" + fenceChar + \"{\" + fenceLength + \",})\";\n var reCodeBlockEnd = new RegExp(codeBlockEnd);\n if (reCodeBlockEnd.test(endLine)) {\n marks.push(markInfo(setOffsetPos(end, 1), end, DELIM));\n }\n var lineBackgroundMarkInfo = lineBackground(parent, start, end, 'code-block');\n return lineBackgroundMarkInfo ? marks.concat(lineBackgroundMarkInfo) : marks;\n}\nfunction customBlock$2(node, start, end) {\n var _a = node, offset = _a.offset, syntaxLength = _a.syntaxLength, info = _a.info, parent = _a.parent;\n var syntaxEnd = offset + syntaxLength;\n var marks = [markInfo(setOffsetPos(start, 1), end, CUSTOM_BLOCK)];\n marks.push(markInfo(start, addOffsetPos(start, syntaxEnd), DELIM));\n if (info) {\n marks.push(markInfo(addOffsetPos(start, syntaxEnd), addOffsetPos(start, syntaxLength + info.length), META));\n }\n marks.push(markInfo(setOffsetPos(end, 1), end, DELIM));\n var lineBackgroundMarkInfo = lineBackground(parent, start, end, 'custom-block');\n return lineBackgroundMarkInfo ? marks.concat(lineBackgroundMarkInfo) : marks;\n}\nfunction markListItemChildren(node, markType) {\n var marks = [];\n while (node) {\n var type = node.type;\n if (type === 'paragraph' || type === 'codeBlock') {\n marks.push(markInfo([getMdStartLine(node), getMdStartCh(node) - 1], [getMdEndLine(node), getMdEndCh(node) + 1], markType));\n }\n node = node.next;\n }\n return marks;\n}\nfunction markParagraphInBlockQuote(node) {\n var marks = [];\n while (node) {\n marks.push(markInfo([getMdStartLine(node), getMdStartCh(node)], [getMdEndLine(node), getMdEndCh(node) + 1], TEXT));\n node = node.next;\n }\n return marks;\n}\nfunction blockQuote$2(node, start, end) {\n var marks = node.parent && node.parent.type !== 'blockQuote' ? [markInfo(start, end, BLOCK_QUOTE)] : [];\n if (node.firstChild) {\n var childMarks = [];\n if (node.firstChild.type === 'paragraph') {\n childMarks = markParagraphInBlockQuote(node.firstChild.firstChild);\n }\n else if (node.firstChild.type === 'list') {\n childMarks = markListItemChildren(node.firstChild, TEXT);\n }\n marks = __spreadArray$1(__spreadArray$1([], marks), childMarks);\n }\n return marks;\n}\nfunction getSpecOfListItemStyle(node) {\n var depth = 0;\n while (node.parent.parent && node.parent.parent.type === 'item') {\n node = node.parent.parent;\n depth += 1;\n }\n var attrs = [{ odd: true }, { even: true }][depth % 2];\n return [LIST_ITEM, __assign$1(__assign$1({}, attrs), { listStyle: true })];\n}\nfunction item$1(node, start) {\n var _a = node.listData, padding = _a.padding, task = _a.task;\n var spec = getSpecOfListItemStyle(node);\n var marks = [markInfo.apply(void 0, __spreadArray$1([start, addOffsetPos(start, padding)], spec))];\n if (task) {\n marks.push(markInfo(addOffsetPos(start, padding), addOffsetPos(start, padding + 3), TASK_DELIM));\n marks.push(markInfo(addOffsetPos(start, padding + 1), addOffsetPos(start, padding + 2), META));\n }\n return marks.concat(markListItemChildren(node.firstChild, TEXT));\n}\nvar markNodeFuncMap = {\n heading: heading$1,\n strong: emphasisAndStrikethrough,\n emph: emphasisAndStrikethrough,\n strike: emphasisAndStrikethrough,\n link: link,\n image: image$1,\n code: code,\n codeBlock: codeBlock$1,\n blockQuote: blockQuote$2,\n item: item$1,\n customBlock: customBlock$2,\n};\nvar simpleMarkClassNameMap = {\n thematicBreak: THEMATIC_BREAK,\n table: TABLE,\n tableCell: TABLE_CELL,\n htmlInline: HTML,\n};\nfunction getMarkInfo(node, start, end, endLine) {\n var type = node.type;\n if (isFunction_1(markNodeFuncMap[type])) {\n // @ts-ignore\n return markNodeFuncMap[type](node, start, end, endLine);\n }\n if (simpleMarkClassNameMap[type]) {\n return [markInfo(start, end, simpleMarkClassNameMap[type])];\n }\n return null;\n}\n\nvar removingBackgroundIndexMap = {};\nfunction syntaxHighlight(_a) {\n var schema = _a.schema, toastMark = _a.toastMark;\n return new Plugin({\n appendTransaction: function (transactions, _, newState) {\n var tr = transactions[0];\n var newTr = newState.tr;\n if (tr.docChanged) {\n var markInfo_1 = [];\n var editResult = tr.getMeta('editResult');\n editResult.forEach(function (result) {\n var nodes = result.nodes, removedNodeRange = result.removedNodeRange;\n if (nodes.length) {\n markInfo_1 = markInfo_1.concat(getMarkForRemoving(newTr, nodes));\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var parent_1 = nodes_1[_i];\n var walker = parent_1.walker();\n var event_1 = walker.next();\n while (event_1) {\n var node = event_1.node, entering = event_1.entering;\n if (entering) {\n markInfo_1 = markInfo_1.concat(getMarkForAdding(node, toastMark));\n }\n event_1 = walker.next();\n }\n }\n }\n else if (removedNodeRange) {\n var maxIndex = newTr.doc.childCount - 1;\n var _a = removedNodeRange.line, startLine = _a[0], endLine = _a[1];\n var startIndex = Math.min(startLine, maxIndex);\n var endIndex = Math.min(endLine, maxIndex);\n // cache the index to remove code block, custom block background when there are no adding nodes\n for (var i = startIndex; i <= endIndex; i += 1) {\n removingBackgroundIndexMap[i] = true;\n }\n }\n });\n appendMarkTr(newTr, schema, markInfo_1);\n }\n return newTr.setMeta('widget', tr.getMeta('widget'));\n },\n });\n}\nfunction isDifferentBlock(doc, index, attrs) {\n return Object.keys(attrs).some(function (name) { return attrs[name] !== doc.child(index).attrs[name]; });\n}\nfunction addLineBackground(tr, doc, paragraph, blockPosInfo, attrs) {\n if (attrs === void 0) { attrs = {}; }\n var startIndex = blockPosInfo.startIndex, endIndex = blockPosInfo.endIndex, from = blockPosInfo.from, to = blockPosInfo.to;\n var shouldChangeBlockType = false;\n for (var i = startIndex; i <= endIndex; i += 1) {\n // prevent to remove background of the node that need to have background\n delete removingBackgroundIndexMap[i];\n shouldChangeBlockType = isDifferentBlock(doc, i, attrs);\n }\n if (shouldChangeBlockType) {\n tr.setBlockType(from, to, paragraph, attrs);\n }\n}\nfunction appendMarkTr(tr, schema, marks) {\n var doc = tr.doc;\n var paragraph = schema.nodes.paragraph;\n // get start position per line for lazy calculation\n var startPosListPerLine = getStartPosListPerLine(doc, doc.childCount);\n marks.forEach(function (_a) {\n var start = _a.start, end = _a.end, spec = _a.spec, lineBackground = _a.lineBackground;\n var startIndex = Math.min(start[0], doc.childCount) - 1;\n var endIndex = Math.min(end[0], doc.childCount) - 1;\n var startNode = doc.child(startIndex);\n var endNode = doc.child(endIndex);\n // calculate the position corresponding to the line\n var from = startPosListPerLine[startIndex];\n var to = startPosListPerLine[endIndex];\n // calculate the position corresponding to the character offset of the line\n from += start[1] + getWidgetNodePos(startNode, start[1] - 1);\n to += end[1] + getWidgetNodePos(endNode, end[1] - 1);\n if (spec) {\n if (lineBackground) {\n var posInfo = { from: from, to: to, startIndex: startIndex, endIndex: endIndex };\n addLineBackground(tr, doc, paragraph, posInfo, spec.attrs);\n }\n else {\n tr.addMark(from, to, schema.mark(spec.type, spec.attrs));\n }\n }\n else {\n tr.removeMark(from, to);\n }\n });\n removeBlockBackground(tr, startPosListPerLine, paragraph);\n}\nfunction removeBlockBackground(tr, startPosListPerLine, paragraph) {\n Object.keys(removingBackgroundIndexMap).forEach(function (index) {\n var startIndex = Number(index);\n // get the end position of the current line with the next node start position.\n var endIndex = Math.min(Number(index) + 1, tr.doc.childCount - 1);\n var from = startPosListPerLine[startIndex];\n // subtract '1' for getting end position of the line\n var to = startPosListPerLine[endIndex] - 1;\n if (startIndex === endIndex) {\n to += 2;\n }\n tr.setBlockType(from, to, paragraph);\n });\n}\nfunction cacheIndexToRemoveBackground(doc, start, end) {\n var skipLines = [];\n removingBackgroundIndexMap = {};\n for (var i = start[0] - 1; i < end[0]; i += 1) {\n var node = doc.child(i);\n var codeEnd = node.attrs.codeEnd;\n var codeStart = node.attrs.codeStart;\n if (codeStart && codeEnd && !includes(skipLines, codeStart)) {\n skipLines.push(codeStart);\n codeEnd = Math.min(codeEnd, doc.childCount);\n // should subtract '1' to markdown line position\n // because markdown parser has '1'(not zero) as the start number\n var startIndex = codeStart - 1;\n var endIndex = end[0];\n for (var index = startIndex; index < endIndex; index += 1) {\n removingBackgroundIndexMap[index] = true;\n }\n }\n }\n}\nfunction getMarkForRemoving(_a, nodes) {\n var doc = _a.doc;\n var start = nodes[0].sourcepos[0];\n var _b = last$1(nodes).sourcepos, end = _b[1];\n var startPos = [start[0], start[1]];\n var endPos = [end[0], end[1] + 1];\n var marks = [];\n cacheIndexToRemoveBackground(doc, start, end);\n marks.push({ start: startPos, end: endPos });\n return marks;\n}\nfunction getMarkForAdding(node, toastMark) {\n var lineTexts = toastMark.getLineTexts();\n var startPos = [getMdStartLine(node), getMdStartCh(node)];\n var endPos = [getMdEndLine(node), getMdEndCh(node) + 1];\n var markInfo = getMarkInfo(node, startPos, endPos, lineTexts[endPos[0] - 1]);\n return markInfo !== null && markInfo !== void 0 ? markInfo : [];\n}\n\nvar defaultToolbarStateKeys = [\n 'taskList',\n 'orderedList',\n 'bulletList',\n 'table',\n 'strong',\n 'emph',\n 'strike',\n 'heading',\n 'thematicBreak',\n 'blockQuote',\n 'code',\n 'codeBlock',\n 'indent',\n 'outdent',\n];\nfunction getToolbarStateType$1(mdNode) {\n var type = mdNode.type;\n if (isListNode$1(mdNode)) {\n if (mdNode.listData.task) {\n return 'taskList';\n }\n return mdNode.listData.type === 'ordered' ? 'orderedList' : 'bulletList';\n }\n if (type.indexOf('table') !== -1) {\n return 'table';\n }\n if (!includes(defaultToolbarStateKeys, type)) {\n return null;\n }\n return type;\n}\nfunction getToolbarState$1(targetNode) {\n var toolbarState = {\n indent: { active: false, disabled: true },\n outdent: { active: false, disabled: true },\n };\n var listEnabled = true;\n traverseParentNodes(targetNode, function (mdNode) {\n var type = getToolbarStateType$1(mdNode);\n if (!type) {\n return;\n }\n if (type === 'bulletList' || type === 'orderedList') {\n // to apply the nearlist list state in the nested list\n if (listEnabled) {\n toolbarState[type] = { active: true };\n toolbarState.indent.disabled = false;\n toolbarState.outdent.disabled = false;\n listEnabled = false;\n }\n }\n else {\n toolbarState[type] = { active: true };\n }\n });\n return toolbarState;\n}\nfunction previewHighlight(_a) {\n var toastMark = _a.toastMark, eventEmitter = _a.eventEmitter;\n return new Plugin({\n view: function () {\n return {\n update: function (view, prevState) {\n var state = view.state;\n var doc = state.doc, selection = state.selection;\n if (prevState && prevState.doc.eq(doc) && prevState.selection.eq(selection)) {\n return;\n }\n var from = selection.from;\n var startChOffset = state.doc.resolve(from).start();\n var line = state.doc.content.findIndex(from).index + 1;\n var ch = from - startChOffset;\n if (from === startChOffset) {\n ch += 1;\n }\n var cursorPos = [line, ch];\n var mdNode = toastMark.findNodeAtPosition(cursorPos);\n var toolbarState = getToolbarState$1(mdNode);\n eventEmitter.emit('changeToolbarState', {\n cursorPos: cursorPos,\n mdNode: mdNode,\n toolbarState: toolbarState,\n });\n eventEmitter.emit('setFocusedNode', mdNode);\n },\n };\n },\n });\n}\n\nvar Doc$1 = /** @class */ (function (_super) {\n __extends$1(Doc, _super);\n function Doc() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Doc.prototype, \"name\", {\n get: function () {\n return 'doc';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Doc.prototype, \"schema\", {\n get: function () {\n return {\n content: 'block+',\n };\n },\n enumerable: false,\n configurable: true\n });\n return Doc;\n}(Node$2));\n\nvar Mark = /** @class */ (function () {\n function Mark() {\n }\n Object.defineProperty(Mark.prototype, \"type\", {\n get: function () {\n return 'mark';\n },\n enumerable: false,\n configurable: true\n });\n Mark.prototype.setContext = function (context) {\n this.context = context;\n };\n return Mark;\n}());\n\nfunction getTextByMdLine(doc, mdLine) {\n return getTextContent(doc, mdLine - 1);\n}\nfunction getTextContent(doc, index) {\n return doc.child(index).textContent;\n}\n\nvar reBlockQuote = /^\\s*> ?/;\nvar BlockQuote$1 = /** @class */ (function (_super) {\n __extends$1(BlockQuote, _super);\n function BlockQuote() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(BlockQuote.prototype, \"name\", {\n get: function () {\n return 'blockQuote';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BlockQuote.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('block-quote') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n BlockQuote.prototype.createBlockQuoteText = function (text, isBlockQuote) {\n return isBlockQuote ? text.replace(reBlockQuote, '').trim() : \"> \" + text.trim();\n };\n BlockQuote.prototype.extendBlockQuote = function () {\n var _this = this;\n return function (_a, dispatch) {\n var selection = _a.selection, doc = _a.doc, tr = _a.tr, schema = _a.schema;\n var _b = getRangeInfo(selection), endFromOffset = _b.endFromOffset, endToOffset = _b.endToOffset, endIndex = _b.endIndex, to = _b.to;\n var textContent = getTextContent(doc, endIndex);\n var isBlockQuote = reBlockQuote.test(textContent);\n if (isBlockQuote && to > endFromOffset && selection.empty) {\n var isEmpty = !textContent.replace(reBlockQuote, '').trim();\n if (isEmpty) {\n tr.deleteRange(endFromOffset, endToOffset).split(tr.mapping.map(endToOffset));\n }\n else {\n var slicedText = textContent.slice(to - endFromOffset).trim();\n var node = createTextNode$1(schema, _this.createBlockQuoteText(slicedText));\n splitAndExtendBlock(tr, endToOffset, slicedText, node);\n }\n dispatch(tr);\n return true;\n }\n return false;\n };\n };\n BlockQuote.prototype.commands = function () {\n var _this = this;\n return function () { return function (state, dispatch) {\n var selection = state.selection, doc = state.doc;\n var _a = getRangeInfo(selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset, startIndex = _a.startIndex, endIndex = _a.endIndex;\n var isBlockQuote = reBlockQuote.test(getTextContent(doc, startIndex));\n var tr = replaceTextNode({\n state: state,\n startIndex: startIndex,\n endIndex: endIndex,\n from: startFromOffset,\n createText: function (textContent) { return _this.createBlockQuoteText(textContent, isBlockQuote); },\n });\n dispatch(tr.setSelection(createTextSelection(tr, tr.mapping.map(endToOffset))));\n return true;\n }; };\n };\n BlockQuote.prototype.keymaps = function () {\n var blockQuoteCommand = this.commands()();\n return {\n 'alt-q': blockQuoteCommand,\n 'alt-Q': blockQuoteCommand,\n Enter: this.extendBlockQuote(),\n };\n };\n return BlockQuote;\n}(Mark));\n\nvar reList = /(^\\s*)([-*+] |[\\d]+\\. )/;\nvar reOrderedList = /(^\\s*)([\\d])+\\.( \\[[ xX]])? /;\nvar reOrderedListGroup = /^(\\s*)((\\d+)([.)]\\s(?:\\[(?:x|\\s)\\]\\s)?))(.*)/;\nvar reCanBeTaskList = /(^\\s*)([-*+]|[\\d]+\\.)( \\[[ xX]])? /;\nvar reBulletListGroup = /^(\\s*)([-*+]+(\\s(?:\\[(?:x|\\s)\\]\\s)?))(.*)/;\nvar reTaskList = /(^\\s*)([-*+] |[\\d]+\\. )(\\[[ xX]] )/;\nvar reBulletTaskList = /(^\\s*)([-*+])( \\[[ xX]]) /;\nfunction getListType(text) {\n return reOrderedList.test(text) ? 'ordered' : 'bullet';\n}\nfunction getListDepth(mdNode) {\n var depth = 0;\n while (mdNode && mdNode.type !== 'document') {\n if (mdNode.type === 'list') {\n depth += 1;\n }\n mdNode = mdNode.parent;\n }\n return depth;\n}\nfunction findSameDepthList(toastMark, currentLine, depth, backward) {\n var lineTexts = toastMark.getLineTexts();\n var lineLen = lineTexts.length;\n var result = [];\n var line = currentLine;\n while (backward ? line < lineLen : line > 1) {\n line = backward ? line + 1 : line - 1;\n var mdNode = toastMark.findFirstNodeAtLine(line);\n var currentListDepth = getListDepth(mdNode);\n if (currentListDepth === depth) {\n result.push({ line: line, depth: depth, mdNode: mdNode });\n }\n else if (currentListDepth < depth) {\n break;\n }\n }\n return result;\n}\nfunction getSameDepthItems(_a) {\n var toastMark = _a.toastMark, mdNode = _a.mdNode, line = _a.line;\n var depth = getListDepth(mdNode);\n var forwardList = findSameDepthList(toastMark, line, depth, false).reverse();\n var backwardList = findSameDepthList(toastMark, line, depth, true);\n return forwardList.concat([{ line: line, depth: depth, mdNode: mdNode }]).concat(backwardList);\n}\nfunction textToBullet(text) {\n if (!reList.test(text)) {\n return \"* \" + text;\n }\n var type = getListType(text);\n if (type === 'bullet' && reCanBeTaskList.test(text)) {\n text = text.replace(reBulletTaskList, '$1$2 ');\n }\n else if (type === 'ordered') {\n text = text.replace(reOrderedList, '$1* ');\n }\n return text;\n}\nfunction textToOrdered(text, ordinalNum) {\n if (!reList.test(text)) {\n return ordinalNum + \". \" + text;\n }\n var type = getListType(text);\n if (type === 'bullet' || (type === 'ordered' && reCanBeTaskList.test(text))) {\n text = text.replace(reCanBeTaskList, \"$1\" + ordinalNum + \". \");\n }\n else if (type === 'ordered') {\n // eslint-disable-next-line prefer-destructuring\n var start = reOrderedListGroup.exec(text)[3];\n if (Number(start) !== ordinalNum) {\n text = text.replace(reOrderedList, \"$1\" + ordinalNum + \". \");\n }\n }\n return text;\n}\nfunction getChangedInfo(doc, sameDepthItems, type, start) {\n if (start === void 0) { start = 0; }\n var firstIndex = Number.MAX_VALUE;\n var lastIndex = 0;\n var changedResults = sameDepthItems.map(function (_a, index) {\n var line = _a.line;\n firstIndex = Math.min(line - 1, firstIndex);\n lastIndex = Math.max(line - 1, lastIndex);\n var text = getTextByMdLine(doc, line);\n text = type === 'bullet' ? textToBullet(text) : textToOrdered(text, index + 1 + start);\n return { text: text, line: line };\n });\n return { changedResults: changedResults, firstIndex: firstIndex, lastIndex: lastIndex };\n}\nfunction getBulletOrOrdered(type, context) {\n var sameDepthListInfo = getSameDepthItems(context);\n return getChangedInfo(context.doc, sameDepthListInfo, type);\n}\nvar otherListToList = {\n bullet: function (context) {\n return getBulletOrOrdered('bullet', context);\n },\n ordered: function (context) {\n return getBulletOrOrdered('ordered', context);\n },\n task: function (_a) {\n var mdNode = _a.mdNode, doc = _a.doc, line = _a.line;\n var text = getTextByMdLine(doc, line);\n if (mdNode.listData.task) {\n text = text.replace(reTaskList, '$1$2');\n }\n else if (isListNode$1(mdNode)) {\n text = text.replace(reList, '$1$2[ ] ');\n }\n return { changedResults: [{ text: text, line: line }] };\n },\n};\nvar otherNodeToList = {\n bullet: function (_a) {\n var doc = _a.doc, line = _a.line;\n var lineText = getTextByMdLine(doc, line);\n var changedResults = [{ text: \"* \" + lineText, line: line }];\n return { changedResults: changedResults };\n },\n ordered: function (_a) {\n var toastMark = _a.toastMark, doc = _a.doc, line = _a.line, startLine = _a.startLine;\n var lineText = getTextByMdLine(doc, line);\n var firstOrderedListNum = 1;\n var firstOrderedListLine = startLine;\n var skipped = 0;\n for (var i = startLine - 1; i > 0; i -= 1) {\n var mdNode = toastMark.findFirstNodeAtLine(i);\n var text = getTextByMdLine(doc, i);\n var canBeListNode = text && !!findClosestNode(mdNode, function (targetNode) { return isListNode$1(targetNode); });\n var searchResult = reOrderedListGroup.exec(getTextByMdLine(doc, i));\n if (!searchResult && !canBeListNode) {\n break;\n }\n if (!searchResult && canBeListNode) {\n skipped += 1;\n continue;\n }\n var _b = searchResult, indent = _b[1], start = _b[3];\n // basis on one depth list\n if (!indent) {\n firstOrderedListNum = Number(start);\n firstOrderedListLine = i;\n break;\n }\n }\n var ordinalNum = firstOrderedListNum + line - firstOrderedListLine - skipped;\n var changedResults = [{ text: ordinalNum + \". \" + lineText, line: line }];\n return { changedResults: changedResults };\n },\n task: function (_a) {\n var doc = _a.doc, line = _a.line;\n var lineText = getTextByMdLine(doc, line);\n var changedResults = [{ text: \"* [ ] \" + lineText, line: line }];\n return { changedResults: changedResults };\n },\n};\nvar extendList = {\n bullet: function (_a) {\n var line = _a.line, doc = _a.doc;\n var lineText = getTextByMdLine(doc, line);\n var _b = reBulletListGroup.exec(lineText), indent = _b[1], delimiter = _b[2];\n return { listSyntax: \"\" + indent + delimiter };\n },\n ordered: function (_a) {\n var toastMark = _a.toastMark, line = _a.line, mdNode = _a.mdNode, doc = _a.doc;\n var depth = getListDepth(mdNode);\n var lineText = getTextByMdLine(doc, line);\n var _b = reOrderedListGroup.exec(lineText), indent = _b[1], start = _b[3], delimiter = _b[4];\n var ordinalNum = Number(start) + 1;\n var listSyntax = \"\" + indent + ordinalNum + delimiter;\n var backwardList = findSameDepthList(toastMark, line, depth, true);\n var filteredList = backwardList.filter(function (info) {\n var searchResult = reOrderedListGroup.exec(getTextByMdLine(doc, info.line));\n return (searchResult &&\n searchResult[1].length === indent.length &&\n !!findClosestNode(info.mdNode, function (targetNode) { return isOrderedListNode(targetNode); }));\n });\n return __assign$1({ listSyntax: listSyntax }, getChangedInfo(doc, filteredList, 'ordered', ordinalNum));\n },\n};\nfunction getReorderedListInfo(doc, schema, line, ordinalNum, prevIndentLength) {\n var nodes = [];\n var lineText = getTextByMdLine(doc, line);\n var searchResult = reOrderedListGroup.exec(lineText);\n while (searchResult) {\n var indent = searchResult[1], delimiter = searchResult[4], text = searchResult[5];\n var indentLength = indent.length;\n if (indentLength === prevIndentLength) {\n nodes.push(createTextNode$1(schema, \"\" + indent + ordinalNum + delimiter + text));\n ordinalNum += 1;\n line += 1;\n }\n else if (indentLength > prevIndentLength) {\n var nestedListInfo = getReorderedListInfo(doc, schema, line, 1, indentLength);\n line = nestedListInfo.line;\n nodes = nodes.concat(nestedListInfo.nodes);\n }\n if (indentLength < prevIndentLength || line > doc.childCount) {\n break;\n }\n lineText = getTextByMdLine(doc, line);\n searchResult = reOrderedListGroup.exec(lineText);\n }\n return { nodes: nodes, line: line };\n}\n\nvar reStartSpace = /(^\\s{1,4})(.*)/;\nfunction isBlockUnit(from, to, text) {\n return from < to || reList.test(text) || reBlockQuote.test(text);\n}\nfunction isInTableCellNode(doc, schema, selection) {\n var $pos = selection.$from;\n if ($pos.depth === 0) {\n $pos = doc.resolve($pos.pos - 1);\n }\n var node = $pos.node(1);\n var startOffset = $pos.start(1);\n var contentSize = node.content.size;\n return (node.rangeHasMark(0, contentSize, schema.marks.table) &&\n $pos.pos - startOffset !== contentSize &&\n $pos.pos !== startOffset);\n}\nfunction createSelection(tr, posInfo) {\n var from = posInfo.from, to = posInfo.to;\n if (posInfo.type === 'indent') {\n var softTabLen = 4;\n from += softTabLen;\n to += (posInfo.lineLen + 1) * softTabLen;\n }\n else {\n var spaceLenList = posInfo.spaceLenList;\n from -= spaceLenList[0];\n for (var i = 0; i < spaceLenList.length; i += 1) {\n to -= spaceLenList[i];\n }\n }\n return createTextSelection(tr, from, to);\n}\nvar Paragraph$1 = /** @class */ (function (_super) {\n __extends$1(Paragraph, _super);\n function Paragraph() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Paragraph.prototype, \"name\", {\n get: function () {\n return 'paragraph';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Paragraph.prototype, \"schema\", {\n get: function () {\n return {\n content: 'inline*',\n attrs: {\n className: { default: null },\n codeStart: { default: null },\n codeEnd: { default: null },\n },\n selectable: false,\n group: 'block',\n parseDOM: [{ tag: 'div' }],\n toDOM: function (_a) {\n var attrs = _a.attrs;\n return attrs.className\n ? ['div', { class: clsWithMdPrefix(attrs.className) }, 0]\n : ['div', 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Paragraph.prototype.reorderList = function (startLine, endLine) {\n var _a = this.context, view = _a.view, toastMark = _a.toastMark, schema = _a.schema;\n var _b = view.state, tr = _b.tr, selection = _b.selection, doc = _b.doc;\n var mdNode = toastMark.findFirstNodeAtLine(startLine);\n var topListNode = mdNode;\n while (mdNode && !isBulletListNode(mdNode) && mdNode.parent.type !== 'document') {\n mdNode = mdNode.parent;\n if (isOrderedListNode(mdNode)) {\n topListNode = mdNode;\n break;\n }\n }\n if (topListNode) {\n startLine = topListNode.sourcepos[0][0];\n }\n var _c = reOrderedListGroup.exec(getTextByMdLine(doc, startLine)), indent = _c[1], start = _c[3];\n var indentLen = indent.length;\n var _d = getReorderedListInfo(doc, schema, startLine, Number(start), indentLen), line = _d.line, nodes = _d.nodes;\n endLine = Math.max(endLine, line - 1);\n var startOffset = getNodeContentOffsetRange(doc, startLine - 1).startOffset;\n for (var i = startLine - 1; i <= endLine - 1; i += 1) {\n var _e = doc.child(i), nodeSize = _e.nodeSize, content = _e.content;\n var mappedFrom = tr.mapping.map(startOffset);\n var mappedTo = mappedFrom + content.size;\n tr.replaceWith(mappedFrom, mappedTo, nodes[i - startLine + 1]);\n startOffset += nodeSize;\n }\n var newSelection = createTextSelection(tr, selection.from, selection.to);\n view.dispatch(tr.setSelection(newSelection));\n };\n Paragraph.prototype.indent = function (tabKey) {\n var _this = this;\n if (tabKey === void 0) { tabKey = false; }\n return function () { return function (state, dispatch) {\n var schema = state.schema, selection = state.selection, doc = state.doc;\n var _a = getRangeInfo(selection), from = _a.from, to = _a.to, startFromOffset = _a.startFromOffset, startIndex = _a.startIndex, endIndex = _a.endIndex;\n if (tabKey && isInTableCellNode(doc, schema, selection)) {\n return false;\n }\n var startLineText = getTextContent(doc, startIndex);\n if ((tabKey && isBlockUnit(from, to, startLineText)) ||\n (!tabKey && reList.test(startLineText))) {\n var tr = replaceTextNode({\n state: state,\n from: startFromOffset,\n startIndex: startIndex,\n endIndex: endIndex,\n createText: function (textContent) { return \" \" + textContent; },\n });\n var posInfo = {\n type: 'indent',\n from: from,\n to: to,\n lineLen: endIndex - startIndex,\n };\n dispatch(tr.setSelection(createSelection(tr, posInfo)));\n if (reOrderedListGroup.test(startLineText)) {\n _this.reorderList(startIndex + 1, endIndex + 1);\n }\n }\n else if (tabKey) {\n dispatch(state.tr.insert(to, createTextNode$1(schema, ' ')));\n }\n return true;\n }; };\n };\n Paragraph.prototype.outdent = function (tabKey) {\n var _this = this;\n if (tabKey === void 0) { tabKey = false; }\n return function () { return function (state, dispatch) {\n var selection = state.selection, doc = state.doc, schema = state.schema;\n var _a = getRangeInfo(selection), from = _a.from, to = _a.to, startFromOffset = _a.startFromOffset, startIndex = _a.startIndex, endIndex = _a.endIndex;\n if (tabKey && isInTableCellNode(doc, schema, selection)) {\n return false;\n }\n var startLineText = getTextContent(doc, startIndex);\n if ((tabKey && isBlockUnit(from, to, startLineText)) ||\n (!tabKey && reList.test(startLineText))) {\n var spaceLenList_1 = [];\n var tr = replaceTextNode({\n state: state,\n from: startFromOffset,\n startIndex: startIndex,\n endIndex: endIndex,\n createText: function (textContent) {\n var searchResult = reStartSpace.exec(textContent);\n spaceLenList_1.push(searchResult ? searchResult[1].length : 0);\n return textContent.replace(reStartSpace, '$2');\n },\n });\n var posInfo = { type: 'outdent', from: from, to: to, spaceLenList: spaceLenList_1 };\n dispatch(tr.setSelection(createSelection(tr, posInfo)));\n if (reOrderedListGroup.test(startLineText)) {\n _this.reorderList(startIndex + 1, endIndex + 1);\n }\n }\n else if (tabKey) {\n var startText = startLineText.slice(0, to - startFromOffset);\n var startTextWithoutSpace = startText.replace(/\\s{1,4}$/, '');\n var deletStart = to - (startText.length - startTextWithoutSpace.length);\n dispatch(state.tr.delete(deletStart, to));\n }\n return true;\n }; };\n };\n Paragraph.prototype.deleteLines = function () {\n var _this = this;\n return function (state, dispatch) {\n var view = _this.context.view;\n var _a = getRangeInfo(state.selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset;\n var deleteRange = function () {\n dispatch(state.tr.deleteRange(startFromOffset, endToOffset));\n return true;\n };\n return chainCommands(deleteRange, joinForward)(state, dispatch, view);\n };\n };\n Paragraph.prototype.moveDown = function () {\n return function (state, dispatch) {\n var doc = state.doc, tr = state.tr, selection = state.selection, schema = state.schema;\n var _a = getRangeInfo(selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset, endIndex = _a.endIndex;\n if (endIndex < doc.content.childCount - 1) {\n var _b = doc.child(endIndex + 1), nodeSize = _b.nodeSize, textContent = _b.textContent;\n tr.delete(endToOffset, endToOffset + nodeSize)\n .split(startFromOffset)\n // subtract 2(start, end tag length) to insert prev line\n .insert(tr.mapping.map(startFromOffset) - 2, createTextNode$1(schema, textContent));\n dispatch(tr);\n return true;\n }\n return false;\n };\n };\n Paragraph.prototype.moveUp = function () {\n return function (state, dispatch) {\n var tr = state.tr, doc = state.doc, selection = state.selection, schema = state.schema;\n var _a = getRangeInfo(selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset, startIndex = _a.startIndex;\n if (startIndex > 0) {\n var _b = doc.child(startIndex - 1), nodeSize = _b.nodeSize, textContent = _b.textContent;\n tr.delete(startFromOffset - nodeSize, startFromOffset)\n .split(tr.mapping.map(endToOffset))\n .insert(tr.mapping.map(endToOffset), createTextNode$1(schema, textContent));\n dispatch(tr);\n return true;\n }\n return false;\n };\n };\n Paragraph.prototype.commands = function () {\n return {\n indent: this.indent(),\n outdent: this.outdent(),\n };\n };\n Paragraph.prototype.keymaps = function () {\n return {\n Tab: this.indent(true)(),\n 'Shift-Tab': this.outdent(true)(),\n 'Mod-d': this.deleteLines(),\n 'Mod-D': this.deleteLines(),\n 'Alt-ArrowUp': this.moveUp(),\n 'Alt-ArrowDown': this.moveDown(),\n };\n };\n return Paragraph;\n}(Node$2));\n\nvar Text$1 = /** @class */ (function (_super) {\n __extends$1(Text, _super);\n function Text() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Text.prototype, \"name\", {\n get: function () {\n return 'text';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"schema\", {\n get: function () {\n return {\n group: 'inline',\n };\n },\n enumerable: false,\n configurable: true\n });\n return Text;\n}(Node$2));\n\nvar reHeading = /^#{1,6}\\s/;\nvar Heading$1 = /** @class */ (function (_super) {\n __extends$1(Heading, _super);\n function Heading() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Heading.prototype, \"name\", {\n get: function () {\n return 'heading';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Heading.prototype, \"schema\", {\n get: function () {\n return {\n attrs: {\n level: { default: 1 },\n seText: { default: false },\n },\n toDOM: function (_a) {\n var attrs = _a.attrs;\n var level = attrs.level, seText = attrs.seText;\n var classNames = \"heading|heading\" + level;\n if (seText) {\n classNames += '|delimiter|setext';\n }\n return ['span', { class: clsWithMdPrefix.apply(void 0, classNames.split('|')) }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Heading.prototype.createHeadingText = function (level, text, curHeadingSyntax) {\n var textContent = text.replace(curHeadingSyntax, '').trim();\n var headingText = '';\n while (level > 0) {\n headingText += '#';\n level -= 1;\n }\n return headingText + \" \" + textContent;\n };\n Heading.prototype.commands = function () {\n var _this = this;\n return function (payload) { return function (state, dispatch) {\n var level = payload.level;\n var _a = getRangeInfo(state.selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset, startIndex = _a.startIndex, endIndex = _a.endIndex;\n var tr = replaceTextNode({\n state: state,\n from: startFromOffset,\n startIndex: startIndex,\n endIndex: endIndex,\n createText: function (textContent) {\n var matchedHeading = textContent.match(reHeading);\n var curHeadingSyntax = matchedHeading ? matchedHeading[0] : '';\n return _this.createHeadingText(level, textContent, curHeadingSyntax);\n },\n });\n dispatch(tr.setSelection(createTextSelection(tr, tr.mapping.map(endToOffset))));\n return true;\n }; };\n };\n return Heading;\n}(Mark));\n\nvar fencedCodeBlockSyntax = '```';\nvar CodeBlock$1 = /** @class */ (function (_super) {\n __extends$1(CodeBlock, _super);\n function CodeBlock() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(CodeBlock.prototype, \"name\", {\n get: function () {\n return 'codeBlock';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CodeBlock.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('code-block') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n CodeBlock.prototype.commands = function () {\n return function () { return function (state, dispatch) {\n var selection = state.selection, schema = state.schema, tr = state.tr;\n var _a = getRangeInfo(selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset;\n var fencedNode = createTextNode$1(schema, fencedCodeBlockSyntax);\n // add fenced start block\n tr.insert(startFromOffset, fencedNode).split(startFromOffset + fencedCodeBlockSyntax.length);\n // add fenced end block\n tr.split(tr.mapping.map(endToOffset)).insert(tr.mapping.map(endToOffset), fencedNode);\n dispatch(tr.setSelection(\n // subtract fenced syntax length and open, close tag(2)\n createTextSelection(tr, tr.mapping.map(endToOffset) - (fencedCodeBlockSyntax.length + 2))));\n return true;\n }; };\n };\n CodeBlock.prototype.keepIndentation = function () {\n var _this = this;\n return function (_a, dispatch) {\n var selection = _a.selection, tr = _a.tr, doc = _a.doc, schema = _a.schema;\n var toastMark = _this.context.toastMark;\n var _b = getRangeInfo(selection), startFromOffset = _b.startFromOffset, endToOffset = _b.endToOffset, endIndex = _b.endIndex, from = _b.from, to = _b.to;\n var textContent = getTextContent(doc, endIndex);\n if (from === to && textContent.trim()) {\n var matched = textContent.match(/^\\s+/);\n var mdNode = toastMark.findFirstNodeAtLine(endIndex + 1);\n if (isCodeBlockNode(mdNode) && matched) {\n var spaces = matched[0];\n var slicedText = textContent.slice(to - startFromOffset);\n var node = createTextNode$1(schema, spaces + slicedText);\n splitAndExtendBlock(tr, endToOffset, slicedText, node);\n dispatch(tr);\n return true;\n }\n }\n return false;\n };\n };\n CodeBlock.prototype.keymaps = function () {\n var codeBlockCommand = this.commands()();\n return {\n 'Shift-Mod-p': codeBlockCommand,\n 'Shift-Mod-P': codeBlockCommand,\n Enter: this.keepIndentation(),\n };\n };\n return CodeBlock;\n}(Mark));\n\nvar reEmptyTable = /\\||\\s/g;\nfunction createTableHeader(columnCount) {\n return [createTableRow(columnCount), createTableRow(columnCount, true)];\n}\nfunction createTableBody$1(columnCount, rowCount) {\n var bodyRows = [];\n for (var i = 0; i < rowCount; i += 1) {\n bodyRows.push(createTableRow(columnCount));\n }\n return bodyRows;\n}\nfunction createTableRow(columnCount, delim) {\n var row = '|';\n for (var i = 0; i < columnCount; i += 1) {\n row += delim ? ' --- |' : ' |';\n }\n return row;\n}\nfunction createTargetTypes(moveNext) {\n return moveNext\n ? { type: 'next', parentType: 'tableHead', childType: 'firstChild' }\n : { type: 'prev', parentType: 'tableBody', childType: 'lastChild' };\n}\nvar Table$1 = /** @class */ (function (_super) {\n __extends$1(Table, _super);\n function Table() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Table.prototype, \"name\", {\n get: function () {\n return 'table';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Table.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('table') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Table.prototype.extendTable = function () {\n var _this = this;\n return function (_a, dispatch) {\n var selection = _a.selection, doc = _a.doc, tr = _a.tr, schema = _a.schema;\n if (!selection.empty) {\n return false;\n }\n var _b = getRangeInfo(selection), endFromOffset = _b.endFromOffset, endToOffset = _b.endToOffset, endIndex = _b.endIndex, to = _b.to;\n var textContent = getTextContent(doc, endIndex);\n // should add `1` to line for the markdown parser\n // because markdown parser has `1`(not zero) as the start number\n var mdPos = [endIndex + 1, to - endFromOffset + 1];\n var mdNode = _this.context.toastMark.findNodeAtPosition(mdPos);\n var cellNode = findClosestNode(mdNode, function (node) {\n return isTableCellNode(node) &&\n (node.parent.type === 'tableDelimRow' || node.parent.parent.type === 'tableBody');\n });\n if (cellNode) {\n var isEmpty = !textContent.replace(reEmptyTable, '').trim();\n var parent_1 = cellNode.parent;\n var columnCount = parent_1.parent.parent.columns.length;\n var row = createTableRow(columnCount);\n if (isEmpty) {\n tr.deleteRange(endFromOffset, endToOffset).split(tr.mapping.map(endToOffset));\n }\n else {\n tr\n .split(endToOffset)\n .insert(tr.mapping.map(endToOffset), createTextNode$1(schema, row))\n // should subtract `2` to selection end position considering ` |` text\n .setSelection(createTextSelection(tr, tr.mapping.map(endToOffset) - 2));\n }\n dispatch(tr);\n return true;\n }\n return false;\n };\n };\n Table.prototype.moveTableCell = function (moveNext) {\n var _this = this;\n return function (_a, dispatch) {\n var selection = _a.selection, tr = _a.tr;\n var _b = getRangeInfo(selection), endFromOffset = _b.endFromOffset, endIndex = _b.endIndex, to = _b.to;\n var mdPos = [endIndex + 1, to - endFromOffset];\n var mdNode = _this.context.toastMark.findNodeAtPosition(mdPos);\n var cellNode = findClosestNode(mdNode, function (node) { return isTableCellNode(node); });\n if (cellNode) {\n var parent_2 = cellNode.parent;\n var _c = createTargetTypes(moveNext), type = _c.type, parentType = _c.parentType, childType = _c.childType;\n var chOffset = getMdEndCh(cellNode);\n if (cellNode[type]) {\n chOffset = getMdEndCh(cellNode[type]) - 1;\n }\n else {\n var row = !parent_2[type] && parent_2.parent.type === parentType\n ? parent_2.parent[type][childType]\n : parent_2[type];\n if (type === 'next') {\n // if there is next row, the base offset would be end position of the next row's first child.\n // Otherwise, the base offset is zero.\n var baseOffset = row ? getMdEndCh(row[childType]) : 0;\n // calculate tag(open, close) position('2') for selection\n chOffset += baseOffset + 2;\n }\n else if (type === 'prev') {\n // if there is prev row, the target position would be '-4' for calculating ' |' characters and tag(open, close)\n // Otherwise, the target position is zero.\n chOffset = row ? -4 : 0;\n }\n }\n dispatch(tr.setSelection(createTextSelection(tr, endFromOffset + chOffset)));\n return true;\n }\n return false;\n };\n };\n Table.prototype.addTable = function () {\n return function (payload) { return function (_a, dispatch) {\n var selection = _a.selection, tr = _a.tr, schema = _a.schema;\n var _b = payload, columnCount = _b.columnCount, rowCount = _b.rowCount;\n var endToOffset = getRangeInfo(selection).endToOffset;\n var headerRows = createTableHeader(columnCount);\n var bodyRows = createTableBody$1(columnCount, rowCount - 1);\n var rows = __spreadArray$1(__spreadArray$1([], headerRows), bodyRows);\n rows.forEach(function (row) {\n tr.split(tr.mapping.map(endToOffset)).insert(tr.mapping.map(endToOffset), createTextNode$1(schema, row));\n });\n // should add `4` to selection position considering `| ` text and start block tag length\n dispatch(tr.setSelection(createTextSelection(tr, endToOffset + 4)));\n return true;\n }; };\n };\n Table.prototype.commands = function () {\n return { addTable: this.addTable() };\n };\n Table.prototype.keymaps = function () {\n return {\n Enter: this.extendTable(),\n Tab: this.moveTableCell(true),\n 'Shift-Tab': this.moveTableCell(false),\n };\n };\n return Table;\n}(Mark));\n\nvar thematicBreakSyntax = '***';\nvar ThematicBreak$1 = /** @class */ (function (_super) {\n __extends$1(ThematicBreak, _super);\n function ThematicBreak() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(ThematicBreak.prototype, \"name\", {\n get: function () {\n return 'thematicBreak';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ThematicBreak.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('thematic-break') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n ThematicBreak.prototype.hr = function () {\n return function () { return function (state, dispatch) {\n var selection = state.selection, schema = state.schema, tr = state.tr;\n var _a = getRangeInfo(selection), from = _a.from, to = _a.to, endToOffset = _a.endToOffset;\n var node = createTextNode$1(schema, thematicBreakSyntax);\n tr\n .split(from)\n .replaceWith(tr.mapping.map(from), tr.mapping.map(to), node)\n .split(tr.mapping.map(to)).setSelection(createTextSelection(tr, tr.mapping.map(endToOffset)));\n dispatch(tr);\n return true;\n }; };\n };\n ThematicBreak.prototype.commands = function () {\n return { hr: this.hr() };\n };\n ThematicBreak.prototype.keymaps = function () {\n var lineCommand = this.hr()();\n return { 'Mod-l': lineCommand, 'Mod-L': lineCommand };\n };\n return ThematicBreak;\n}(Mark));\n\nfunction cannotBeListNode(_a, line) {\n var type = _a.type, sourcepos = _a.sourcepos;\n // eslint-disable-next-line prefer-destructuring\n var startLine = sourcepos[0][0];\n return line <= startLine && (type === 'codeBlock' || type === 'heading' || type.match('table'));\n}\nvar ListItem$1 = /** @class */ (function (_super) {\n __extends$1(ListItem, _super);\n function ListItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(ListItem.prototype, \"name\", {\n get: function () {\n return 'listItem';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ListItem.prototype, \"schema\", {\n get: function () {\n return {\n attrs: {\n odd: { default: false },\n even: { default: false },\n listStyle: { default: false },\n },\n toDOM: function (_a) {\n var attrs = _a.attrs;\n var odd = attrs.odd, even = attrs.even, listStyle = attrs.listStyle;\n var classNames = 'list-item';\n if (listStyle) {\n classNames += '|list-item-style';\n }\n if (odd) {\n classNames += '|list-item-odd';\n }\n if (even) {\n classNames += '|list-item-even';\n }\n return ['span', { class: clsWithMdPrefix.apply(void 0, classNames.split('|')) }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n ListItem.prototype.extendList = function () {\n var _this = this;\n return function (_a, dispatch) {\n var selection = _a.selection, doc = _a.doc, schema = _a.schema, tr = _a.tr;\n var toastMark = _this.context.toastMark;\n var _b = getRangeInfo(selection), to = _b.to, startFromOffset = _b.startFromOffset, endFromOffset = _b.endFromOffset, endIndex = _b.endIndex, endToOffset = _b.endToOffset;\n var textContent = getTextContent(doc, endIndex);\n var isList = reList.test(textContent);\n if (!isList || selection.from === startFromOffset || !selection.empty) {\n return false;\n }\n var isEmpty = !textContent.replace(reCanBeTaskList, '').trim();\n if (isEmpty) {\n tr.deleteRange(endFromOffset, endToOffset).split(tr.mapping.map(endToOffset));\n }\n else {\n var commandType = getListType(textContent);\n // should add `1` to line for the markdown parser\n // because markdown parser has `1`(not zero) as the start number\n var mdNode = toastMark.findFirstNodeAtLine(endIndex + 1);\n var slicedText = textContent.slice(to - endFromOffset);\n var context = { toastMark: toastMark, mdNode: mdNode, doc: doc, line: endIndex + 1 };\n var _c = extendList[commandType](context), listSyntax = _c.listSyntax, changedResults = _c.changedResults;\n // change ordinal number of backward ordered list\n if (changedResults === null || changedResults === void 0 ? void 0 : changedResults.length) {\n // split the block\n tr.split(to);\n // set first ordered list info\n changedResults.unshift({ text: listSyntax + slicedText, line: endIndex + 1 });\n _this.changeToListPerLine(tr, changedResults, {\n from: to,\n // don't subtract 1 because the line has increased through 'split' command.\n startLine: changedResults[0].line,\n endLine: last$1(changedResults).line,\n });\n var pos = tr.mapping.map(endToOffset) - slicedText.length;\n tr.setSelection(createTextSelection(tr, pos));\n }\n else {\n var node = createTextNode$1(schema, listSyntax + slicedText);\n splitAndExtendBlock(tr, endToOffset, slicedText, node);\n }\n }\n dispatch(tr);\n return true;\n };\n };\n ListItem.prototype.toList = function (commandType) {\n var _this = this;\n return function () { return function (_a, dispatch) {\n var doc = _a.doc, tr = _a.tr, selection = _a.selection;\n var toastMark = _this.context.toastMark;\n var rangeInfo = getRangeInfo(selection);\n // should add `1` to line for the markdown parser\n // because markdown parser has `1`(not zero) as the start number\n var startLine = rangeInfo.startIndex + 1;\n var endLine = rangeInfo.endIndex + 1;\n var endToOffset = rangeInfo.endToOffset;\n var skipLines = [];\n for (var line = startLine; line <= endLine; line += 1) {\n var mdNode = toastMark.findFirstNodeAtLine(line);\n if (mdNode && cannotBeListNode(mdNode, line)) {\n break;\n }\n // to skip unnecessary processing\n if (skipLines.indexOf(line) !== -1) {\n continue;\n }\n var context = { toastMark: toastMark, mdNode: mdNode, doc: doc, line: line, startLine: startLine };\n var changedResults = (isListNode$1(mdNode)\n ? otherListToList[commandType](context)\n : otherNodeToList[commandType](context)).changedResults;\n var endOffset = _this.changeToListPerLine(tr, changedResults, {\n from: getNodeContentOffsetRange(doc, changedResults[0].line - 1).startOffset,\n startLine: changedResults[0].line,\n endLine: last$1(changedResults).line,\n indexDiff: 1,\n });\n endToOffset = Math.max(endOffset, endToOffset);\n if (changedResults) {\n skipLines = skipLines.concat(changedResults.map(function (info) { return info.line; }));\n }\n }\n dispatch(tr.setSelection(createTextSelection(tr, tr.mapping.map(endToOffset))));\n return true;\n }; };\n };\n ListItem.prototype.changeToListPerLine = function (tr, changedResults, _a) {\n var from = _a.from, startLine = _a.startLine, endLine = _a.endLine, _b = _a.indexDiff, indexDiff = _b === void 0 ? 0 : _b;\n var maxEndOffset = 0;\n var _loop_1 = function (i) {\n var _c = tr.doc.child(i), nodeSize = _c.nodeSize, content = _c.content;\n var mappedFrom = tr.mapping.map(from);\n var mappedTo = mappedFrom + content.size;\n var changedResult = changedResults.filter(function (result) { return result.line - indexDiff === i; })[0];\n if (changedResult) {\n tr.replaceWith(mappedFrom, mappedTo, createTextNode$1(this_1.context.schema, changedResult.text));\n maxEndOffset = Math.max(maxEndOffset, from + content.size);\n }\n from += nodeSize;\n };\n var this_1 = this;\n for (var i = startLine - indexDiff; i <= endLine - indexDiff; i += 1) {\n _loop_1(i);\n }\n return maxEndOffset;\n };\n ListItem.prototype.toggleTask = function () {\n var _this = this;\n return function (_a, dispatch) {\n var selection = _a.selection, tr = _a.tr, doc = _a.doc, schema = _a.schema;\n var toastMark = _this.context.toastMark;\n var _b = getRangeInfo(selection), startIndex = _b.startIndex, endIndex = _b.endIndex;\n var newTr = null;\n for (var i = startIndex; i <= endIndex; i += 1) {\n var mdNode = toastMark.findFirstNodeAtLine(i + 1);\n if (isListNode$1(mdNode) && mdNode.listData.task) {\n var _c = mdNode.listData, checked = _c.checked, padding = _c.padding;\n var stateChar = checked ? ' ' : 'x';\n var mdPos = mdNode.sourcepos[0];\n var startOffset = getNodeContentOffsetRange(doc, mdPos[0] - 1).startOffset;\n startOffset += mdPos[1] + padding;\n newTr = tr.replaceWith(startOffset, startOffset + 1, schema.text(stateChar));\n }\n }\n if (newTr) {\n dispatch(newTr);\n return true;\n }\n return false;\n };\n };\n ListItem.prototype.commands = function () {\n return {\n bulletList: this.toList('bullet'),\n orderedList: this.toList('ordered'),\n taskList: this.toList('task'),\n };\n };\n ListItem.prototype.keymaps = function () {\n var bulletCommand = this.toList('bullet')();\n var orderedCommand = this.toList('ordered')();\n var taskCommand = this.toList('task')();\n var togleTaskCommand = this.toggleTask();\n return {\n 'Mod-u': bulletCommand,\n 'Mod-U': bulletCommand,\n 'Mod-o': orderedCommand,\n 'Mod-O': orderedCommand,\n 'alt-t': taskCommand,\n 'alt-T': taskCommand,\n 'Shift-Ctrl-x': togleTaskCommand,\n 'Shift-Ctrl-X': togleTaskCommand,\n Enter: this.extendList(),\n };\n };\n return ListItem;\n}(Mark));\n\nfunction toggleMark(condition, syntax) {\n return function () { return function (_a, dispatch) {\n var tr = _a.tr, selection = _a.selection;\n var conditionFn = !isFunction_1(condition)\n ? function (text) { return condition.test(text); }\n : condition;\n var syntaxLen = syntax.length;\n var doc = tr.doc;\n var _b = resolveSelectionPos(selection), from = _b[0], to = _b[1];\n var prevPos = Math.max(from - syntaxLen, 1);\n var nextPos = Math.min(to + syntaxLen, doc.content.size - 1);\n var slice = selection.content();\n var textContent = slice.content.textBetween(0, slice.content.size, '\\n');\n var prevText = doc.textBetween(prevPos, from, '\\n');\n var nextText = doc.textBetween(to, nextPos, '\\n');\n textContent = \"\" + prevText + textContent + nextText;\n if (prevText && nextText && conditionFn(textContent)) {\n tr.delete(nextPos - syntaxLen, nextPos).delete(prevPos, prevPos + syntaxLen);\n }\n else {\n tr.insertText(syntax, to).insertText(syntax, from);\n var newSelection = selection.empty\n ? createTextSelection(tr, from + syntaxLen)\n : createTextSelection(tr, from + syntaxLen, to + syntaxLen);\n tr.setSelection(newSelection);\n }\n dispatch(tr);\n return true;\n }; };\n}\n\nvar reStrong = /^(\\*{2}|_{2}).*([\\s\\S]*)\\1$/m;\nvar strongSyntax = '**';\nvar Strong$1 = /** @class */ (function (_super) {\n __extends$1(Strong, _super);\n function Strong() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Strong.prototype, \"name\", {\n get: function () {\n return 'strong';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Strong.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('strong') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Strong.prototype.bold = function () {\n return toggleMark(reStrong, strongSyntax);\n };\n Strong.prototype.commands = function () {\n return { bold: this.bold() };\n };\n Strong.prototype.keymaps = function () {\n var boldCommand = this.bold()();\n return { 'Mod-b': boldCommand, 'Mod-B': boldCommand };\n };\n return Strong;\n}(Mark));\n\nvar reStrike = /^(~{2}).*([\\s\\S]*)\\1$/m;\nvar strikeSyntax = '~~';\nvar Strike$1 = /** @class */ (function (_super) {\n __extends$1(Strike, _super);\n function Strike() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Strike.prototype, \"name\", {\n get: function () {\n return 'strike';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Strike.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('strike') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Strike.prototype.commands = function () {\n return toggleMark(reStrike, strikeSyntax);\n };\n Strike.prototype.keymaps = function () {\n var strikeCommand = this.commands()();\n return { 'Mod-s': strikeCommand, 'Mod-S': strikeCommand };\n };\n return Strike;\n}(Mark));\n\nvar reEmph = /^(\\*|_).*([\\s\\S]*)\\1$/m;\nvar emphSyntax = '*';\nvar Emph$1 = /** @class */ (function (_super) {\n __extends$1(Emph, _super);\n function Emph() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Emph.prototype, \"name\", {\n get: function () {\n return 'emph';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Emph.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('emph') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Emph.prototype.italic = function () {\n return toggleMark(reEmph, emphSyntax);\n };\n Emph.prototype.commands = function () {\n return { italic: this.italic() };\n };\n Emph.prototype.keymaps = function () {\n var italicCommand = this.italic()();\n return { 'Mod-i': italicCommand, 'Mod-I': italicCommand };\n };\n return Emph;\n}(Mark));\n\nvar reCode = /^(`).*([\\s\\S]*)\\1$/m;\nvar codeSyntax = '`';\nvar Code$1 = /** @class */ (function (_super) {\n __extends$1(Code, _super);\n function Code() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Code.prototype, \"name\", {\n get: function () {\n return 'code';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Code.prototype, \"schema\", {\n get: function () {\n return {\n attrs: {\n start: { default: false },\n end: { default: false },\n marked: { default: false },\n },\n toDOM: function (mark) {\n var _a = mark.attrs, start = _a.start, end = _a.end, marked = _a.marked;\n var classNames = 'code';\n if (start) {\n classNames += '|delimiter|start';\n }\n if (end) {\n classNames += '|delimiter|end';\n }\n if (marked) {\n classNames += '|marked-text';\n }\n return ['span', { class: clsWithMdPrefix.apply(void 0, classNames.split('|')) }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Code.prototype.commands = function () {\n return toggleMark(reCode, codeSyntax);\n };\n Code.prototype.keymaps = function () {\n var codeCommand = this.commands()();\n return { 'Shift-Mod-c': codeCommand, 'Shift-Mod-C': codeCommand };\n };\n return Code;\n}(Mark));\n\nvar Link$1 = /** @class */ (function (_super) {\n __extends$1(Link, _super);\n function Link() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Link.prototype, \"name\", {\n get: function () {\n return 'link';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Link.prototype, \"schema\", {\n get: function () {\n return {\n attrs: {\n url: { default: false },\n desc: { default: false },\n },\n toDOM: function (_a) {\n var attrs = _a.attrs;\n var url = attrs.url, desc = attrs.desc;\n var classNames = 'link';\n if (url) {\n classNames += '|link-url|marked-text';\n }\n if (desc) {\n classNames += '|link-desc|marked-text';\n }\n return ['span', { class: clsWithMdPrefix.apply(void 0, classNames.split('|')) }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n Link.prototype.addLinkOrImage = function (commandType) {\n return function (payload) { return function (_a, dispatch) {\n var selection = _a.selection, tr = _a.tr, schema = _a.schema;\n var _b = resolveSelectionPos(selection), from = _b[0], to = _b[1];\n var _c = payload, linkText = _c.linkText, altText = _c.altText, linkUrl = _c.linkUrl, imageUrl = _c.imageUrl;\n var text = linkText;\n var url = linkUrl;\n var syntax = '';\n if (commandType === 'image') {\n text = altText;\n url = imageUrl;\n syntax = '!';\n }\n text = escapeTextForLink(text);\n syntax += \"[\" + text + \"](\" + url + \")\";\n dispatch(tr.replaceWith(from, to, createTextNode$1(schema, syntax)));\n return true;\n }; };\n };\n Link.prototype.commands = function () {\n return {\n addImage: this.addLinkOrImage('image'),\n addLink: this.addLinkOrImage('link'),\n };\n };\n return Link;\n}(Mark));\n\nvar TaskDelimiter = /** @class */ (function (_super) {\n __extends$1(TaskDelimiter, _super);\n function TaskDelimiter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(TaskDelimiter.prototype, \"name\", {\n get: function () {\n return 'taskDelimiter';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TaskDelimiter.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('delimiter', 'list-item') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n return TaskDelimiter;\n}(Mark));\nvar Delimiter = /** @class */ (function (_super) {\n __extends$1(Delimiter, _super);\n function Delimiter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Delimiter.prototype, \"name\", {\n get: function () {\n return 'delimiter';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Delimiter.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('delimiter') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n return Delimiter;\n}(Mark));\nvar Meta = /** @class */ (function (_super) {\n __extends$1(Meta, _super);\n function Meta() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Meta.prototype, \"name\", {\n get: function () {\n return 'meta';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Meta.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('meta') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n return Meta;\n}(Mark));\nvar MarkedText = /** @class */ (function (_super) {\n __extends$1(MarkedText, _super);\n function MarkedText() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(MarkedText.prototype, \"name\", {\n get: function () {\n return 'markedText';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MarkedText.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('marked-text') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n return MarkedText;\n}(Mark));\nvar TableCell = /** @class */ (function (_super) {\n __extends$1(TableCell, _super);\n function TableCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(TableCell.prototype, \"name\", {\n get: function () {\n return 'tableCell';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TableCell.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('table-cell') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n return TableCell;\n}(Mark));\n\nvar Html = /** @class */ (function (_super) {\n __extends$1(Html, _super);\n function Html() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Html.prototype, \"name\", {\n get: function () {\n return 'html';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Html.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('html') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n return Html;\n}(Mark));\n\nvar customBlockSyntax = '$$';\nvar CustomBlock$1 = /** @class */ (function (_super) {\n __extends$1(CustomBlock, _super);\n function CustomBlock() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(CustomBlock.prototype, \"name\", {\n get: function () {\n return 'customBlock';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CustomBlock.prototype, \"schema\", {\n get: function () {\n return {\n toDOM: function () {\n return ['span', { class: clsWithMdPrefix('custom-block') }, 0];\n },\n };\n },\n enumerable: false,\n configurable: true\n });\n CustomBlock.prototype.commands = function () {\n return function (payload) { return function (state, dispatch) {\n var selection = state.selection, schema = state.schema, tr = state.tr;\n var _a = getRangeInfo(selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset;\n if (!(payload === null || payload === void 0 ? void 0 : payload.info)) {\n return false;\n }\n var customBlock = \"\" + customBlockSyntax + payload.info;\n var startNode = createTextNode$1(schema, customBlock);\n var endNode = createTextNode$1(schema, customBlockSyntax);\n tr.insert(startFromOffset, startNode).split(startFromOffset + customBlock.length);\n tr.split(tr.mapping.map(endToOffset)).insert(tr.mapping.map(endToOffset), endNode);\n dispatch(tr.setSelection(createTextSelection(tr, tr.mapping.map(endToOffset) - (customBlockSyntax.length + 2))));\n return true;\n }; };\n };\n return CustomBlock;\n}(Mark));\n\nvar reTaskMarkerKey = /x|backspace/i;\nvar reTaskMarker = /^\\[(\\s*)(x?)(\\s*)\\](?:\\s+)/i;\nfunction smartTask(_a) {\n var schema = _a.schema, toastMark = _a.toastMark;\n return new Plugin({\n props: {\n handleDOMEvents: {\n keyup: function (view, ev) {\n var _a;\n var _b = view.state, doc = _b.doc, tr = _b.tr, selection = _b.selection;\n if (selection.empty && reTaskMarkerKey.test(ev.key)) {\n var _c = getRangeInfo(selection), startIndex = _c.startIndex, startFromOffset = _c.startFromOffset, from = _c.from;\n // should add `1` to line for the markdown parser\n // because markdown parser has `1`(not zero) as the start number\n var mdPos = [startIndex + 1, from - startFromOffset + 1];\n var mdNode = toastMark.findNodeAtPosition(mdPos);\n var paraNode = findClosestNode(mdNode, function (node) { var _a; return node.type === 'paragraph' && ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.type) === 'item'; });\n if ((_a = paraNode === null || paraNode === void 0 ? void 0 : paraNode.firstChild) === null || _a === void 0 ? void 0 : _a.literal) {\n var firstChild = paraNode.firstChild;\n var matched = firstChild.literal.match(reTaskMarker);\n if (matched) {\n var startMdPos = firstChild.sourcepos[0];\n var startSpaces = matched[1], stateChar = matched[2], lastSpaces = matched[3];\n var spaces = startSpaces.length + lastSpaces.length;\n var startOffset = getNodeContentOffsetRange(doc, startMdPos[0] - 1).startOffset;\n var startPos = startMdPos[1] + startOffset;\n if (stateChar) {\n var addedPos = spaces ? spaces + 1 : 0;\n tr.replaceWith(startPos, addedPos + startPos, schema.text(stateChar));\n view.dispatch(tr);\n }\n else if (!spaces) {\n tr.insertText(' ', startPos);\n view.dispatch(tr);\n }\n }\n }\n }\n return false;\n },\n },\n },\n });\n}\n\nvar EVENT_TYPE = 'cut';\nvar reLineEnding$2 = /\\r\\n|\\n|\\r/;\nvar MdEditor = /** @class */ (function (_super) {\n __extends$1(MdEditor, _super);\n function MdEditor(eventEmitter, options) {\n var _this = _super.call(this, eventEmitter) || this;\n var toastMark = options.toastMark, _a = options.useCommandShortcut, useCommandShortcut = _a === void 0 ? true : _a, _b = options.mdPlugins, mdPlugins = _b === void 0 ? [] : _b;\n _this.editorType = 'markdown';\n _this.el.classList.add('md-mode');\n _this.toastMark = toastMark;\n _this.extraPlugins = mdPlugins;\n _this.specs = _this.createSpecs();\n _this.schema = _this.createSchema();\n _this.context = _this.createContext();\n _this.keymaps = _this.createKeymaps(useCommandShortcut);\n _this.view = _this.createView();\n _this.commands = _this.createCommands();\n _this.specs.setContext(__assign$1(__assign$1({}, _this.context), { view: _this.view }));\n _this.createClipboard();\n // To prevent unnecessary focus setting during initial rendering\n _this.eventEmitter.listen('changePreviewTabWrite', function (isMarkdownTabMounted) {\n return _this.toggleActive(true, isMarkdownTabMounted);\n });\n _this.eventEmitter.listen('changePreviewTabPreview', function () { return _this.toggleActive(false); });\n _this.initEvent();\n return _this;\n }\n MdEditor.prototype.toggleActive = function (active, isMarkdownTabMounted) {\n toggleClass(this.el, 'active', active);\n if (active) {\n if (!isMarkdownTabMounted) {\n this.focus();\n }\n }\n else {\n this.blur();\n }\n };\n MdEditor.prototype.createClipboard = function () {\n var _this = this;\n this.clipboard = document.createElement('textarea');\n this.clipboard.className = cls('pseudo-clipboard');\n this.clipboard.addEventListener('paste', function (ev) {\n var clipboardData = ev.clipboardData || window.clipboardData;\n var items = clipboardData && clipboardData.items;\n if (items) {\n var containRtfItem = toArray_1(items).some(function (item) { return item.kind === 'string' && item.type === 'text/rtf'; });\n // if it contains rtf, it's most likely copy paste from office -> no image\n if (!containRtfItem) {\n var imageBlob = pasteImageOnly(items);\n if (imageBlob) {\n ev.preventDefault();\n emitImageBlobHook(_this.eventEmitter, imageBlob, ev.type);\n }\n }\n }\n });\n // process the pasted data in input event for IE11\n this.clipboard.addEventListener('input', function (ev) {\n var text = ev.target.value;\n _this.replaceSelection(text);\n ev.preventDefault();\n ev.target.value = '';\n });\n this.el.insertBefore(this.clipboard, this.view.dom);\n };\n MdEditor.prototype.createContext = function () {\n return {\n toastMark: this.toastMark,\n schema: this.schema,\n eventEmitter: this.eventEmitter,\n };\n };\n MdEditor.prototype.createSpecs = function () {\n return new SpecManager([\n new Doc$1(),\n new Paragraph$1(),\n new Widget(),\n new Text$1(),\n new Heading$1(),\n new BlockQuote$1(),\n new CodeBlock$1(),\n new CustomBlock$1(),\n new Table$1(),\n new TableCell(),\n new ThematicBreak$1(),\n new ListItem$1(),\n new Strong$1(),\n new Strike$1(),\n new Emph$1(),\n new Code$1(),\n new Link$1(),\n new Delimiter(),\n new TaskDelimiter(),\n new MarkedText(),\n new Meta(),\n new Html(),\n ]);\n };\n MdEditor.prototype.createPlugins = function () {\n return __spreadArray$1([\n syntaxHighlight(this.context),\n previewHighlight(this.context),\n smartTask(this.context)\n ], this.createPluginProps()).concat(this.defaultPlugins);\n };\n MdEditor.prototype.createView = function () {\n var _this = this;\n return new EditorView(this.el, {\n state: this.createState(),\n dispatchTransaction: function (tr) {\n _this.updateMarkdown(tr);\n var state = _this.view.state.applyTransaction(tr).state;\n _this.view.updateState(state);\n _this.emitChangeEvent(tr);\n },\n handleKeyDown: function (_, ev) {\n if ((ev.metaKey || ev.ctrlKey) && ev.key.toUpperCase() === 'V') {\n _this.clipboard.focus();\n }\n _this.eventEmitter.emit('keydown', _this.editorType, ev);\n return false;\n },\n handleDOMEvents: {\n copy: function (_, ev) { return _this.captureCopy(ev); },\n cut: function (_, ev) { return _this.captureCopy(ev, EVENT_TYPE); },\n scroll: function () {\n _this.eventEmitter.emit('scroll', 'editor');\n return true;\n },\n keyup: function (_, ev) {\n _this.eventEmitter.emit('keyup', _this.editorType, ev);\n return false;\n },\n },\n nodeViews: {\n widget: widgetNodeView,\n },\n });\n };\n MdEditor.prototype.createCommands = function () {\n return this.specs.commands(this.view);\n };\n MdEditor.prototype.captureCopy = function (ev, type) {\n ev.preventDefault();\n var _a = this.view.state, selection = _a.selection, tr = _a.tr;\n if (selection.empty) {\n return true;\n }\n var text = this.getChanged(selection.content());\n if (ev.clipboardData) {\n ev.clipboardData.setData('text/plain', text);\n }\n else {\n window.clipboardData.setData('Text', text);\n }\n if (type === EVENT_TYPE) {\n this.view.dispatch(tr.deleteSelection().scrollIntoView().setMeta('uiEvent', EVENT_TYPE));\n }\n return true;\n };\n MdEditor.prototype.updateMarkdown = function (tr) {\n var _this = this;\n if (tr.docChanged) {\n tr.steps.forEach(function (step, index) {\n if (step.slice && !(step instanceof ReplaceAroundStep)) {\n var doc = tr.docs[index];\n var _a = [step.from, step.to], from = _a[0], to = _a[1];\n var _b = getEditorToMdPos(doc, from, to), startPos = _b[0], endPos = _b[1];\n var changed = _this.getChanged(step.slice);\n if (startPos[0] === endPos[0] && startPos[1] === endPos[1] && changed === '') {\n changed = '\\n';\n }\n var editResult = _this.toastMark.editMarkdown(startPos, endPos, changed);\n _this.eventEmitter.emit('updatePreview', editResult);\n tr.setMeta('editResult', editResult).scrollIntoView();\n }\n });\n }\n };\n MdEditor.prototype.getChanged = function (slice) {\n var changed = '';\n var from = 0;\n var to = slice.content.size;\n slice.content.nodesBetween(from, to, function (node, pos) {\n if (node.isText) {\n changed += node.text.slice(Math.max(from, pos) - pos, to - pos);\n }\n else if (node.isBlock && pos > 0) {\n changed += '\\n';\n }\n });\n return changed;\n };\n MdEditor.prototype.setSelection = function (start, end) {\n if (end === void 0) { end = start; }\n var tr = this.view.state.tr;\n var _a = getMdToEditorPos(tr.doc, start, end), from = _a[0], to = _a[1];\n this.view.dispatch(tr.setSelection(createTextSelection(tr, from, to)).scrollIntoView());\n };\n MdEditor.prototype.replaceSelection = function (text, start, end) {\n var newTr;\n var _a = this.view.state, tr = _a.tr, schema = _a.schema, doc = _a.doc;\n var lineTexts = text.split(reLineEnding$2);\n var nodes = lineTexts.map(function (lineText) {\n return createParagraph(schema, createNodesWithWidget(lineText, schema));\n });\n var slice = new Slice(Fragment.from(nodes), 1, 1);\n this.focus();\n if (start && end) {\n var _b = getMdToEditorPos(doc, start, end), from = _b[0], to = _b[1];\n newTr = tr.replaceRange(from, to, slice);\n }\n else {\n newTr = tr.replaceSelection(slice);\n }\n this.view.dispatch(newTr.scrollIntoView());\n };\n MdEditor.prototype.deleteSelection = function (start, end) {\n var newTr;\n var _a = this.view.state, tr = _a.tr, doc = _a.doc;\n if (start && end) {\n var _b = getMdToEditorPos(doc, start, end), from = _b[0], to = _b[1];\n newTr = tr.deleteRange(from, to);\n }\n else {\n newTr = tr.deleteSelection();\n }\n this.view.dispatch(newTr.scrollIntoView());\n };\n MdEditor.prototype.getSelectedText = function (start, end) {\n var _a = this.view.state, doc = _a.doc, selection = _a.selection;\n var from = selection.from, to = selection.to;\n if (start && end) {\n var pos = getMdToEditorPos(doc, start, end);\n from = pos[0];\n to = pos[1];\n }\n return doc.textBetween(from, to, '\\n');\n };\n MdEditor.prototype.getSelection = function () {\n var _a = this.view.state.selection, from = _a.from, to = _a.to;\n return getEditorToMdPos(this.view.state.tr.doc, from, to);\n };\n MdEditor.prototype.setMarkdown = function (markdown, cursorToEnd) {\n if (cursorToEnd === void 0) { cursorToEnd = true; }\n var lineTexts = markdown.split(reLineEnding$2);\n var _a = this.view.state, tr = _a.tr, doc = _a.doc, schema = _a.schema;\n var nodes = lineTexts.map(function (lineText) {\n return createParagraph(schema, createNodesWithWidget(lineText, schema));\n });\n this.view.dispatch(tr.replaceWith(0, doc.content.size, nodes));\n if (cursorToEnd) {\n this.moveCursorToEnd(true);\n }\n };\n MdEditor.prototype.addWidget = function (node, style, mdPos) {\n var _a = this.view.state, tr = _a.tr, doc = _a.doc, selection = _a.selection;\n var pos = mdPos ? getMdToEditorPos(doc, mdPos, mdPos)[0] : selection.to;\n this.view.dispatch(tr.setMeta('widget', { pos: pos, node: node, style: style }));\n };\n MdEditor.prototype.replaceWithWidget = function (start, end, text) {\n var _a = this.view.state, tr = _a.tr, schema = _a.schema, doc = _a.doc;\n var pos = getMdToEditorPos(doc, start, end);\n var nodes = createNodesWithWidget(text, schema);\n this.view.dispatch(tr.replaceWith(pos[0], pos[1], nodes));\n };\n MdEditor.prototype.getRangeInfoOfNode = function (pos) {\n var _a = this.view.state, doc = _a.doc, selection = _a.selection;\n var mdPos = pos || getEditorToMdPos(doc, selection.from)[0];\n var mdNode = this.toastMark.findNodeAtPosition(mdPos);\n if (mdNode.type === 'text' && mdNode.parent.type !== 'paragraph') {\n mdNode = mdNode.parent;\n }\n // add 1 sync for prosemirror position\n mdNode.sourcepos[1][1] += 1;\n return { range: mdNode.sourcepos, type: mdNode.type };\n };\n MdEditor.prototype.getMarkdown = function () {\n return this.toastMark\n .getLineTexts()\n .map(function (lineText) { return unwrapWidgetSyntax(lineText); })\n .join('\\n');\n };\n MdEditor.prototype.getToastMark = function () {\n return this.toastMark;\n };\n return MdEditor;\n}(EditorBase));\n\n/**\n * @fileoverview Get event collection for specific HTML element\n * @author NHN FE Development Lab \n */\n\nvar EVENT_KEY = '_feEventKey';\n\n/**\n * Get event collection for specific HTML element\n * @param {HTMLElement} element - HTML element\n * @param {string} type - event type\n * @returns {array}\n * @private\n */\nfunction safeEvent$2(element, type) {\n var events = element[EVENT_KEY];\n var handlers;\n\n if (!events) {\n events = element[EVENT_KEY] = {};\n }\n\n handlers = events[type];\n if (!handlers) {\n handlers = events[type] = [];\n }\n\n return handlers;\n}\n\nvar _safeEvent = safeEvent$2;\n\n/**\n * @fileoverview Unbind DOM events\n * @author NHN FE Development Lab \n */\n\nvar isString$1 = isString_1;\nvar forEach$1 = forEach_1;\n\nvar safeEvent$1 = _safeEvent;\n\n/**\n * Unbind DOM events\n * If a handler function is not passed, remove all events of that type.\n * @param {HTMLElement} element - element to unbind events\n * @param {(string|object)} types - Space splitted events names or eventName:handler object\n * @param {function} [handler] - handler function\n * @memberof module:domEvent\n * @example\n * // Following the example of domEvent#on\n * \n * // Unbind one event from an element.\n * off(div, 'click', toggle);\n * \n * // Unbind multiple events with a same handler from multiple elements at once.\n * // Use event names splitted by a space.\n * off(element, 'mouseenter mouseleave', changeColor);\n * \n * // Unbind multiple events with different handlers from an element at once.\n * // Use an object which of key is an event name and value is a handler function.\n * off(div, {\n * keydown: highlight,\n * keyup: dehighlight\n * });\n * \n * // Unbind events without handlers.\n * off(div, 'drag');\n */\nfunction off(element, types, handler) {\n if (isString$1(types)) {\n forEach$1(types.split(/\\s+/g), function(type) {\n unbindEvent(element, type, handler);\n });\n\n return;\n }\n\n forEach$1(types, function(func, type) {\n unbindEvent(element, type, func);\n });\n}\n\n/**\n * Unbind DOM events\n * If a handler function is not passed, remove all events of that type.\n * @param {HTMLElement} element - element to unbind events\n * @param {string} type - events name\n * @param {function} [handler] - handler function\n * @private\n */\nfunction unbindEvent(element, type, handler) {\n var events = safeEvent$1(element, type);\n var index;\n\n if (!handler) {\n forEach$1(events, function(item) {\n removeHandler(element, type, item.wrappedHandler);\n });\n events.splice(0, events.length);\n } else {\n forEach$1(events, function(item, idx) {\n if (handler === item.handler) {\n removeHandler(element, type, item.wrappedHandler);\n index = idx;\n\n return false;\n }\n\n return true;\n });\n events.splice(index, 1);\n }\n}\n\n/**\n * Remove an event handler\n * @param {HTMLElement} element - An element to remove an event\n * @param {string} type - event type\n * @param {function} handler - event handler\n * @private\n */\nfunction removeHandler(element, type, handler) {\n if ('removeEventListener' in element) {\n element.removeEventListener(type, handler);\n } else if ('detachEvent' in element) {\n element.detachEvent('on' + type, handler);\n }\n}\n\nvar off_1 = off;\n\n/**\n * @fileoverview Bind DOM events\n * @author NHN FE Development Lab \n */\n\nvar isString = isString_1;\nvar forEach = forEach_1;\n\nvar safeEvent = _safeEvent;\n\n/**\n * Bind DOM events.\n * @param {HTMLElement} element - element to bind events\n * @param {(string|object)} types - Space splitted events names or eventName:handler object\n * @param {(function|object)} handler - handler function or context for handler method\n * @param {object} [context] context - context for handler method.\n * @memberof module:domEvent\n * @example\n * const div = document.querySelector('div');\n * \n * // Bind one event to an element.\n * on(div, 'click', toggle);\n * \n * // Bind multiple events with a same handler to multiple elements at once.\n * // Use event names splitted by a space.\n * on(div, 'mouseenter mouseleave', changeColor);\n * \n * // Bind multiple events with different handlers to an element at once.\n * // Use an object which of key is an event name and value is a handler function.\n * on(div, {\n * keydown: highlight,\n * keyup: dehighlight\n * });\n * \n * // Set a context for handler method.\n * const name = 'global';\n * const repository = {name: 'CodeSnippet'};\n * on(div, 'drag', function() {\n * console.log(this.name);\n * }, repository);\n * // Result when you drag a div: \"CodeSnippet\"\n */\nfunction on(element, types, handler, context) {\n if (isString(types)) {\n forEach(types.split(/\\s+/g), function(type) {\n bindEvent(element, type, handler, context);\n });\n\n return;\n }\n\n forEach(types, function(func, type) {\n bindEvent(element, type, func, handler);\n });\n}\n\n/**\n * Bind DOM events\n * @param {HTMLElement} element - element to bind events\n * @param {string} type - events name\n * @param {function} handler - handler function or context for handler method\n * @param {object} [context] context - context for handler method.\n * @private\n */\nfunction bindEvent(element, type, handler, context) {\n /**\n * Event handler\n * @param {Event} e - event object\n */\n function eventHandler(e) {\n handler.call(context || element, e || window.event);\n }\n\n if ('addEventListener' in element) {\n element.addEventListener(type, eventHandler);\n } else if ('attachEvent' in element) {\n element.attachEvent('on' + type, eventHandler);\n }\n memorizeHandler(element, type, handler, eventHandler);\n}\n\n/**\n * Memorize DOM event handler for unbinding.\n * @param {HTMLElement} element - element to bind events\n * @param {string} type - events name\n * @param {function} handler - handler function that user passed at on() use\n * @param {function} wrappedHandler - handler function that wrapped by domevent for implementing some features\n * @private\n */\nfunction memorizeHandler(element, type, handler, wrappedHandler) {\n var events = safeEvent(element, type);\n var existInEvents = false;\n\n forEach(events, function(obj) {\n if (obj.handler === handler) {\n existInEvents = true;\n\n return false;\n }\n\n return true;\n });\n\n if (!existInEvents) {\n events.push({\n handler: handler,\n wrappedHandler: wrappedHandler\n });\n }\n}\n\nvar on_1 = on;\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i, ch, cache = encodeCache[exclude];\n if (cache) { return cache; }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode$1(string, exclude, keepEscaped) {\n var i, l, code, nextCode, cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode$1.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode$1.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode$1.componentChars = \"-_.!~*'()\";\n\n\nvar encode_1 = encode$1;\n\nvar lib = {};\n\nvar decode = {};\n\nvar Aacute$1 = \"Á\";\nvar aacute$1 = \"á\";\nvar Abreve = \"Ă\";\nvar abreve = \"ă\";\nvar ac = \"∾\";\nvar acd = \"∿\";\nvar acE = \"∾̳\";\nvar Acirc$1 = \"Â\";\nvar acirc$1 = \"â\";\nvar acute$1 = \"´\";\nvar Acy = \"А\";\nvar acy = \"а\";\nvar AElig$1 = \"Æ\";\nvar aelig$1 = \"æ\";\nvar af = \"⁡\";\nvar Afr = \"𝔄\";\nvar afr = \"𝔞\";\nvar Agrave$1 = \"À\";\nvar agrave$1 = \"à\";\nvar alefsym = \"ℵ\";\nvar aleph = \"ℵ\";\nvar Alpha = \"Α\";\nvar alpha = \"α\";\nvar Amacr = \"Ā\";\nvar amacr = \"ā\";\nvar amalg = \"⨿\";\nvar amp$2 = \"&\";\nvar AMP$1 = \"&\";\nvar andand = \"⩕\";\nvar And = \"⩓\";\nvar and = \"∧\";\nvar andd = \"⩜\";\nvar andslope = \"⩘\";\nvar andv = \"⩚\";\nvar ang = \"∠\";\nvar ange = \"⦤\";\nvar angle = \"∠\";\nvar angmsdaa = \"⦨\";\nvar angmsdab = \"⦩\";\nvar angmsdac = \"⦪\";\nvar angmsdad = \"⦫\";\nvar angmsdae = \"⦬\";\nvar angmsdaf = \"⦭\";\nvar angmsdag = \"⦮\";\nvar angmsdah = \"⦯\";\nvar angmsd = \"∡\";\nvar angrt = \"∟\";\nvar angrtvb = \"⊾\";\nvar angrtvbd = \"⦝\";\nvar angsph = \"∢\";\nvar angst = \"Å\";\nvar angzarr = \"⍼\";\nvar Aogon = \"Ą\";\nvar aogon = \"ą\";\nvar Aopf = \"𝔸\";\nvar aopf = \"𝕒\";\nvar apacir = \"⩯\";\nvar ap = \"≈\";\nvar apE = \"⩰\";\nvar ape = \"≊\";\nvar apid = \"≋\";\nvar apos$1 = \"'\";\nvar ApplyFunction = \"⁡\";\nvar approx = \"≈\";\nvar approxeq = \"≊\";\nvar Aring$1 = \"Å\";\nvar aring$1 = \"å\";\nvar Ascr = \"𝒜\";\nvar ascr = \"𝒶\";\nvar Assign = \"≔\";\nvar ast = \"*\";\nvar asymp = \"≈\";\nvar asympeq = \"≍\";\nvar Atilde$1 = \"Ã\";\nvar atilde$1 = \"ã\";\nvar Auml$1 = \"Ä\";\nvar auml$1 = \"ä\";\nvar awconint = \"∳\";\nvar awint = \"⨑\";\nvar backcong = \"≌\";\nvar backepsilon = \"϶\";\nvar backprime = \"‵\";\nvar backsim = \"∽\";\nvar backsimeq = \"⋍\";\nvar Backslash = \"∖\";\nvar Barv = \"⫧\";\nvar barvee = \"⊽\";\nvar barwed = \"⌅\";\nvar Barwed = \"⌆\";\nvar barwedge = \"⌅\";\nvar bbrk = \"⎵\";\nvar bbrktbrk = \"⎶\";\nvar bcong = \"≌\";\nvar Bcy = \"Б\";\nvar bcy = \"б\";\nvar bdquo = \"„\";\nvar becaus = \"∵\";\nvar because = \"∵\";\nvar Because = \"∵\";\nvar bemptyv = \"⦰\";\nvar bepsi = \"϶\";\nvar bernou = \"ℬ\";\nvar Bernoullis = \"ℬ\";\nvar Beta = \"Β\";\nvar beta = \"β\";\nvar beth = \"ℶ\";\nvar between = \"≬\";\nvar Bfr = \"𝔅\";\nvar bfr = \"𝔟\";\nvar bigcap = \"⋂\";\nvar bigcirc = \"◯\";\nvar bigcup = \"⋃\";\nvar bigodot = \"⨀\";\nvar bigoplus = \"⨁\";\nvar bigotimes = \"⨂\";\nvar bigsqcup = \"⨆\";\nvar bigstar = \"★\";\nvar bigtriangledown = \"▽\";\nvar bigtriangleup = \"△\";\nvar biguplus = \"⨄\";\nvar bigvee = \"⋁\";\nvar bigwedge = \"⋀\";\nvar bkarow = \"⤍\";\nvar blacklozenge = \"⧫\";\nvar blacksquare = \"▪\";\nvar blacktriangle = \"▴\";\nvar blacktriangledown = \"▾\";\nvar blacktriangleleft = \"◂\";\nvar blacktriangleright = \"▸\";\nvar blank = \"␣\";\nvar blk12 = \"▒\";\nvar blk14 = \"░\";\nvar blk34 = \"▓\";\nvar block = \"█\";\nvar bne = \"=⃥\";\nvar bnequiv = \"≡⃥\";\nvar bNot = \"⫭\";\nvar bnot = \"⌐\";\nvar Bopf = \"𝔹\";\nvar bopf = \"𝕓\";\nvar bot = \"⊥\";\nvar bottom = \"⊥\";\nvar bowtie = \"⋈\";\nvar boxbox = \"⧉\";\nvar boxdl = \"┐\";\nvar boxdL = \"╕\";\nvar boxDl = \"╖\";\nvar boxDL = \"╗\";\nvar boxdr = \"┌\";\nvar boxdR = \"╒\";\nvar boxDr = \"╓\";\nvar boxDR = \"╔\";\nvar boxh = \"─\";\nvar boxH = \"═\";\nvar boxhd = \"┬\";\nvar boxHd = \"╤\";\nvar boxhD = \"╥\";\nvar boxHD = \"╦\";\nvar boxhu = \"┴\";\nvar boxHu = \"╧\";\nvar boxhU = \"╨\";\nvar boxHU = \"╩\";\nvar boxminus = \"⊟\";\nvar boxplus = \"⊞\";\nvar boxtimes = \"⊠\";\nvar boxul = \"┘\";\nvar boxuL = \"╛\";\nvar boxUl = \"╜\";\nvar boxUL = \"╝\";\nvar boxur = \"└\";\nvar boxuR = \"╘\";\nvar boxUr = \"╙\";\nvar boxUR = \"╚\";\nvar boxv = \"│\";\nvar boxV = \"║\";\nvar boxvh = \"┼\";\nvar boxvH = \"╪\";\nvar boxVh = \"╫\";\nvar boxVH = \"╬\";\nvar boxvl = \"┤\";\nvar boxvL = \"╡\";\nvar boxVl = \"╢\";\nvar boxVL = \"╣\";\nvar boxvr = \"├\";\nvar boxvR = \"╞\";\nvar boxVr = \"╟\";\nvar boxVR = \"╠\";\nvar bprime = \"‵\";\nvar breve = \"˘\";\nvar Breve = \"˘\";\nvar brvbar$1 = \"¦\";\nvar bscr = \"𝒷\";\nvar Bscr = \"ℬ\";\nvar bsemi = \"⁏\";\nvar bsim = \"∽\";\nvar bsime = \"⋍\";\nvar bsolb = \"⧅\";\nvar bsol = \"\\\\\";\nvar bsolhsub = \"⟈\";\nvar bull = \"•\";\nvar bullet = \"•\";\nvar bump = \"≎\";\nvar bumpE = \"⪮\";\nvar bumpe = \"≏\";\nvar Bumpeq = \"≎\";\nvar bumpeq = \"≏\";\nvar Cacute = \"Ć\";\nvar cacute = \"ć\";\nvar capand = \"⩄\";\nvar capbrcup = \"⩉\";\nvar capcap = \"⩋\";\nvar cap = \"∩\";\nvar Cap = \"⋒\";\nvar capcup = \"⩇\";\nvar capdot = \"⩀\";\nvar CapitalDifferentialD = \"ⅅ\";\nvar caps = \"∩︀\";\nvar caret = \"⁁\";\nvar caron = \"ˇ\";\nvar Cayleys = \"ℭ\";\nvar ccaps = \"⩍\";\nvar Ccaron = \"Č\";\nvar ccaron = \"č\";\nvar Ccedil$1 = \"Ç\";\nvar ccedil$1 = \"ç\";\nvar Ccirc = \"Ĉ\";\nvar ccirc = \"ĉ\";\nvar Cconint = \"∰\";\nvar ccups = \"⩌\";\nvar ccupssm = \"⩐\";\nvar Cdot = \"Ċ\";\nvar cdot = \"ċ\";\nvar cedil$1 = \"¸\";\nvar Cedilla = \"¸\";\nvar cemptyv = \"⦲\";\nvar cent$1 = \"¢\";\nvar centerdot = \"·\";\nvar CenterDot = \"·\";\nvar cfr = \"𝔠\";\nvar Cfr = \"ℭ\";\nvar CHcy = \"Ч\";\nvar chcy = \"ч\";\nvar check = \"✓\";\nvar checkmark = \"✓\";\nvar Chi = \"Χ\";\nvar chi = \"χ\";\nvar circ = \"ˆ\";\nvar circeq = \"≗\";\nvar circlearrowleft = \"↺\";\nvar circlearrowright = \"↻\";\nvar circledast = \"⊛\";\nvar circledcirc = \"⊚\";\nvar circleddash = \"⊝\";\nvar CircleDot = \"⊙\";\nvar circledR = \"®\";\nvar circledS = \"Ⓢ\";\nvar CircleMinus = \"⊖\";\nvar CirclePlus = \"⊕\";\nvar CircleTimes = \"⊗\";\nvar cir = \"○\";\nvar cirE = \"⧃\";\nvar cire = \"≗\";\nvar cirfnint = \"⨐\";\nvar cirmid = \"⫯\";\nvar cirscir = \"⧂\";\nvar ClockwiseContourIntegral = \"∲\";\nvar CloseCurlyDoubleQuote = \"”\";\nvar CloseCurlyQuote = \"’\";\nvar clubs = \"♣\";\nvar clubsuit = \"♣\";\nvar colon = \":\";\nvar Colon = \"∷\";\nvar Colone = \"⩴\";\nvar colone = \"≔\";\nvar coloneq = \"≔\";\nvar comma = \",\";\nvar commat = \"@\";\nvar comp = \"∁\";\nvar compfn = \"∘\";\nvar complement = \"∁\";\nvar complexes = \"ℂ\";\nvar cong = \"≅\";\nvar congdot = \"⩭\";\nvar Congruent = \"≡\";\nvar conint = \"∮\";\nvar Conint = \"∯\";\nvar ContourIntegral = \"∮\";\nvar copf = \"𝕔\";\nvar Copf = \"ℂ\";\nvar coprod = \"∐\";\nvar Coproduct = \"∐\";\nvar copy$1 = \"©\";\nvar COPY$1 = \"©\";\nvar copysr = \"℗\";\nvar CounterClockwiseContourIntegral = \"∳\";\nvar crarr = \"↵\";\nvar cross = \"✗\";\nvar Cross = \"⨯\";\nvar Cscr = \"𝒞\";\nvar cscr = \"𝒸\";\nvar csub = \"⫏\";\nvar csube = \"⫑\";\nvar csup = \"⫐\";\nvar csupe = \"⫒\";\nvar ctdot = \"⋯\";\nvar cudarrl = \"⤸\";\nvar cudarrr = \"⤵\";\nvar cuepr = \"⋞\";\nvar cuesc = \"⋟\";\nvar cularr = \"↶\";\nvar cularrp = \"⤽\";\nvar cupbrcap = \"⩈\";\nvar cupcap = \"⩆\";\nvar CupCap = \"≍\";\nvar cup = \"∪\";\nvar Cup = \"⋓\";\nvar cupcup = \"⩊\";\nvar cupdot = \"⊍\";\nvar cupor = \"⩅\";\nvar cups = \"∪︀\";\nvar curarr = \"↷\";\nvar curarrm = \"⤼\";\nvar curlyeqprec = \"⋞\";\nvar curlyeqsucc = \"⋟\";\nvar curlyvee = \"⋎\";\nvar curlywedge = \"⋏\";\nvar curren$1 = \"¤\";\nvar curvearrowleft = \"↶\";\nvar curvearrowright = \"↷\";\nvar cuvee = \"⋎\";\nvar cuwed = \"⋏\";\nvar cwconint = \"∲\";\nvar cwint = \"∱\";\nvar cylcty = \"⌭\";\nvar dagger = \"†\";\nvar Dagger = \"‡\";\nvar daleth = \"ℸ\";\nvar darr = \"↓\";\nvar Darr = \"↡\";\nvar dArr = \"⇓\";\nvar dash = \"‐\";\nvar Dashv = \"⫤\";\nvar dashv = \"⊣\";\nvar dbkarow = \"⤏\";\nvar dblac = \"˝\";\nvar Dcaron = \"Ď\";\nvar dcaron = \"ď\";\nvar Dcy = \"Д\";\nvar dcy = \"д\";\nvar ddagger = \"‡\";\nvar ddarr = \"⇊\";\nvar DD = \"ⅅ\";\nvar dd = \"ⅆ\";\nvar DDotrahd = \"⤑\";\nvar ddotseq = \"⩷\";\nvar deg$1 = \"°\";\nvar Del = \"∇\";\nvar Delta = \"Δ\";\nvar delta = \"δ\";\nvar demptyv = \"⦱\";\nvar dfisht = \"⥿\";\nvar Dfr = \"𝔇\";\nvar dfr = \"𝔡\";\nvar dHar = \"⥥\";\nvar dharl = \"⇃\";\nvar dharr = \"⇂\";\nvar DiacriticalAcute = \"´\";\nvar DiacriticalDot = \"˙\";\nvar DiacriticalDoubleAcute = \"˝\";\nvar DiacriticalGrave = \"`\";\nvar DiacriticalTilde = \"˜\";\nvar diam = \"⋄\";\nvar diamond = \"⋄\";\nvar Diamond = \"⋄\";\nvar diamondsuit = \"♦\";\nvar diams = \"♦\";\nvar die = \"¨\";\nvar DifferentialD = \"ⅆ\";\nvar digamma = \"ϝ\";\nvar disin = \"⋲\";\nvar div = \"÷\";\nvar divide$1 = \"÷\";\nvar divideontimes = \"⋇\";\nvar divonx = \"⋇\";\nvar DJcy = \"Ђ\";\nvar djcy = \"ђ\";\nvar dlcorn = \"⌞\";\nvar dlcrop = \"⌍\";\nvar dollar = \"$\";\nvar Dopf = \"𝔻\";\nvar dopf = \"𝕕\";\nvar Dot = \"¨\";\nvar dot = \"˙\";\nvar DotDot = \"⃜\";\nvar doteq = \"≐\";\nvar doteqdot = \"≑\";\nvar DotEqual = \"≐\";\nvar dotminus = \"∸\";\nvar dotplus = \"∔\";\nvar dotsquare = \"⊡\";\nvar doublebarwedge = \"⌆\";\nvar DoubleContourIntegral = \"∯\";\nvar DoubleDot = \"¨\";\nvar DoubleDownArrow = \"⇓\";\nvar DoubleLeftArrow = \"⇐\";\nvar DoubleLeftRightArrow = \"⇔\";\nvar DoubleLeftTee = \"⫤\";\nvar DoubleLongLeftArrow = \"⟸\";\nvar DoubleLongLeftRightArrow = \"⟺\";\nvar DoubleLongRightArrow = \"⟹\";\nvar DoubleRightArrow = \"⇒\";\nvar DoubleRightTee = \"⊨\";\nvar DoubleUpArrow = \"⇑\";\nvar DoubleUpDownArrow = \"⇕\";\nvar DoubleVerticalBar = \"∥\";\nvar DownArrowBar = \"⤓\";\nvar downarrow = \"↓\";\nvar DownArrow = \"↓\";\nvar Downarrow = \"⇓\";\nvar DownArrowUpArrow = \"⇵\";\nvar DownBreve = \"̑\";\nvar downdownarrows = \"⇊\";\nvar downharpoonleft = \"⇃\";\nvar downharpoonright = \"⇂\";\nvar DownLeftRightVector = \"⥐\";\nvar DownLeftTeeVector = \"⥞\";\nvar DownLeftVectorBar = \"⥖\";\nvar DownLeftVector = \"↽\";\nvar DownRightTeeVector = \"⥟\";\nvar DownRightVectorBar = \"⥗\";\nvar DownRightVector = \"⇁\";\nvar DownTeeArrow = \"↧\";\nvar DownTee = \"⊤\";\nvar drbkarow = \"⤐\";\nvar drcorn = \"⌟\";\nvar drcrop = \"⌌\";\nvar Dscr = \"𝒟\";\nvar dscr = \"𝒹\";\nvar DScy = \"Ѕ\";\nvar dscy = \"ѕ\";\nvar dsol = \"⧶\";\nvar Dstrok = \"Đ\";\nvar dstrok = \"đ\";\nvar dtdot = \"⋱\";\nvar dtri = \"▿\";\nvar dtrif = \"▾\";\nvar duarr = \"⇵\";\nvar duhar = \"⥯\";\nvar dwangle = \"⦦\";\nvar DZcy = \"Џ\";\nvar dzcy = \"џ\";\nvar dzigrarr = \"⟿\";\nvar Eacute$1 = \"É\";\nvar eacute$1 = \"é\";\nvar easter = \"⩮\";\nvar Ecaron = \"Ě\";\nvar ecaron = \"ě\";\nvar Ecirc$1 = \"Ê\";\nvar ecirc$1 = \"ê\";\nvar ecir = \"≖\";\nvar ecolon = \"≕\";\nvar Ecy = \"Э\";\nvar ecy = \"э\";\nvar eDDot = \"⩷\";\nvar Edot = \"Ė\";\nvar edot = \"ė\";\nvar eDot = \"≑\";\nvar ee = \"ⅇ\";\nvar efDot = \"≒\";\nvar Efr = \"𝔈\";\nvar efr = \"𝔢\";\nvar eg = \"⪚\";\nvar Egrave$1 = \"È\";\nvar egrave$1 = \"è\";\nvar egs = \"⪖\";\nvar egsdot = \"⪘\";\nvar el = \"⪙\";\nvar Element$1 = \"∈\";\nvar elinters = \"⏧\";\nvar ell = \"ℓ\";\nvar els = \"⪕\";\nvar elsdot = \"⪗\";\nvar Emacr = \"Ē\";\nvar emacr = \"ē\";\nvar empty = \"∅\";\nvar emptyset = \"∅\";\nvar EmptySmallSquare = \"◻\";\nvar emptyv = \"∅\";\nvar EmptyVerySmallSquare = \"▫\";\nvar emsp13 = \" \";\nvar emsp14 = \" \";\nvar emsp = \" \";\nvar ENG = \"Ŋ\";\nvar eng = \"ŋ\";\nvar ensp = \" \";\nvar Eogon = \"Ę\";\nvar eogon = \"ę\";\nvar Eopf = \"𝔼\";\nvar eopf = \"𝕖\";\nvar epar = \"⋕\";\nvar eparsl = \"⧣\";\nvar eplus = \"⩱\";\nvar epsi = \"ε\";\nvar Epsilon = \"Ε\";\nvar epsilon = \"ε\";\nvar epsiv = \"ϵ\";\nvar eqcirc = \"≖\";\nvar eqcolon = \"≕\";\nvar eqsim = \"≂\";\nvar eqslantgtr = \"⪖\";\nvar eqslantless = \"⪕\";\nvar Equal = \"⩵\";\nvar equals = \"=\";\nvar EqualTilde = \"≂\";\nvar equest = \"≟\";\nvar Equilibrium = \"⇌\";\nvar equiv = \"≡\";\nvar equivDD = \"⩸\";\nvar eqvparsl = \"⧥\";\nvar erarr = \"⥱\";\nvar erDot = \"≓\";\nvar escr = \"ℯ\";\nvar Escr = \"ℰ\";\nvar esdot = \"≐\";\nvar Esim = \"⩳\";\nvar esim = \"≂\";\nvar Eta = \"Η\";\nvar eta = \"η\";\nvar ETH$1 = \"Ð\";\nvar eth$1 = \"ð\";\nvar Euml$1 = \"Ë\";\nvar euml$1 = \"ë\";\nvar euro = \"€\";\nvar excl = \"!\";\nvar exist = \"∃\";\nvar Exists = \"∃\";\nvar expectation = \"ℰ\";\nvar exponentiale = \"ⅇ\";\nvar ExponentialE = \"ⅇ\";\nvar fallingdotseq = \"≒\";\nvar Fcy = \"Ф\";\nvar fcy = \"ф\";\nvar female = \"♀\";\nvar ffilig = \"ffi\";\nvar fflig = \"ff\";\nvar ffllig = \"ffl\";\nvar Ffr = \"𝔉\";\nvar ffr = \"𝔣\";\nvar filig = \"fi\";\nvar FilledSmallSquare = \"◼\";\nvar FilledVerySmallSquare = \"▪\";\nvar fjlig = \"fj\";\nvar flat = \"♭\";\nvar fllig = \"fl\";\nvar fltns = \"▱\";\nvar fnof = \"ƒ\";\nvar Fopf = \"𝔽\";\nvar fopf = \"𝕗\";\nvar forall = \"∀\";\nvar ForAll = \"∀\";\nvar fork = \"⋔\";\nvar forkv = \"⫙\";\nvar Fouriertrf = \"ℱ\";\nvar fpartint = \"⨍\";\nvar frac12$1 = \"½\";\nvar frac13 = \"⅓\";\nvar frac14$1 = \"¼\";\nvar frac15 = \"⅕\";\nvar frac16 = \"⅙\";\nvar frac18 = \"⅛\";\nvar frac23 = \"⅔\";\nvar frac25 = \"⅖\";\nvar frac34$1 = \"¾\";\nvar frac35 = \"⅗\";\nvar frac38 = \"⅜\";\nvar frac45 = \"⅘\";\nvar frac56 = \"⅚\";\nvar frac58 = \"⅝\";\nvar frac78 = \"⅞\";\nvar frasl = \"⁄\";\nvar frown = \"⌢\";\nvar fscr = \"𝒻\";\nvar Fscr = \"ℱ\";\nvar gacute = \"ǵ\";\nvar Gamma = \"Γ\";\nvar gamma = \"γ\";\nvar Gammad = \"Ϝ\";\nvar gammad = \"ϝ\";\nvar gap = \"⪆\";\nvar Gbreve = \"Ğ\";\nvar gbreve = \"ğ\";\nvar Gcedil = \"Ģ\";\nvar Gcirc = \"Ĝ\";\nvar gcirc = \"ĝ\";\nvar Gcy = \"Г\";\nvar gcy = \"г\";\nvar Gdot = \"Ġ\";\nvar gdot = \"ġ\";\nvar ge = \"≥\";\nvar gE = \"≧\";\nvar gEl = \"⪌\";\nvar gel = \"⋛\";\nvar geq = \"≥\";\nvar geqq = \"≧\";\nvar geqslant = \"⩾\";\nvar gescc = \"⪩\";\nvar ges = \"⩾\";\nvar gesdot = \"⪀\";\nvar gesdoto = \"⪂\";\nvar gesdotol = \"⪄\";\nvar gesl = \"⋛︀\";\nvar gesles = \"⪔\";\nvar Gfr = \"𝔊\";\nvar gfr = \"𝔤\";\nvar gg = \"≫\";\nvar Gg = \"⋙\";\nvar ggg = \"⋙\";\nvar gimel = \"ℷ\";\nvar GJcy = \"Ѓ\";\nvar gjcy = \"ѓ\";\nvar gla = \"⪥\";\nvar gl = \"≷\";\nvar glE = \"⪒\";\nvar glj = \"⪤\";\nvar gnap = \"⪊\";\nvar gnapprox = \"⪊\";\nvar gne = \"⪈\";\nvar gnE = \"≩\";\nvar gneq = \"⪈\";\nvar gneqq = \"≩\";\nvar gnsim = \"⋧\";\nvar Gopf = \"𝔾\";\nvar gopf = \"𝕘\";\nvar grave = \"`\";\nvar GreaterEqual = \"≥\";\nvar GreaterEqualLess = \"⋛\";\nvar GreaterFullEqual = \"≧\";\nvar GreaterGreater = \"⪢\";\nvar GreaterLess = \"≷\";\nvar GreaterSlantEqual = \"⩾\";\nvar GreaterTilde = \"≳\";\nvar Gscr = \"𝒢\";\nvar gscr = \"ℊ\";\nvar gsim = \"≳\";\nvar gsime = \"⪎\";\nvar gsiml = \"⪐\";\nvar gtcc = \"⪧\";\nvar gtcir = \"⩺\";\nvar gt$2 = \">\";\nvar GT$1 = \">\";\nvar Gt = \"≫\";\nvar gtdot = \"⋗\";\nvar gtlPar = \"⦕\";\nvar gtquest = \"⩼\";\nvar gtrapprox = \"⪆\";\nvar gtrarr = \"⥸\";\nvar gtrdot = \"⋗\";\nvar gtreqless = \"⋛\";\nvar gtreqqless = \"⪌\";\nvar gtrless = \"≷\";\nvar gtrsim = \"≳\";\nvar gvertneqq = \"≩︀\";\nvar gvnE = \"≩︀\";\nvar Hacek = \"ˇ\";\nvar hairsp = \" \";\nvar half = \"½\";\nvar hamilt = \"ℋ\";\nvar HARDcy = \"Ъ\";\nvar hardcy = \"ъ\";\nvar harrcir = \"⥈\";\nvar harr = \"↔\";\nvar hArr = \"⇔\";\nvar harrw = \"↭\";\nvar Hat = \"^\";\nvar hbar = \"ℏ\";\nvar Hcirc = \"Ĥ\";\nvar hcirc = \"ĥ\";\nvar hearts = \"♥\";\nvar heartsuit = \"♥\";\nvar hellip = \"…\";\nvar hercon = \"⊹\";\nvar hfr = \"𝔥\";\nvar Hfr = \"ℌ\";\nvar HilbertSpace = \"ℋ\";\nvar hksearow = \"⤥\";\nvar hkswarow = \"⤦\";\nvar hoarr = \"⇿\";\nvar homtht = \"∻\";\nvar hookleftarrow = \"↩\";\nvar hookrightarrow = \"↪\";\nvar hopf = \"𝕙\";\nvar Hopf = \"ℍ\";\nvar horbar = \"―\";\nvar HorizontalLine = \"─\";\nvar hscr = \"𝒽\";\nvar Hscr = \"ℋ\";\nvar hslash = \"ℏ\";\nvar Hstrok = \"Ħ\";\nvar hstrok = \"ħ\";\nvar HumpDownHump = \"≎\";\nvar HumpEqual = \"≏\";\nvar hybull = \"⁃\";\nvar hyphen = \"‐\";\nvar Iacute$1 = \"Í\";\nvar iacute$1 = \"í\";\nvar ic = \"⁣\";\nvar Icirc$1 = \"Î\";\nvar icirc$1 = \"î\";\nvar Icy = \"И\";\nvar icy = \"и\";\nvar Idot = \"İ\";\nvar IEcy = \"Е\";\nvar iecy = \"е\";\nvar iexcl$1 = \"¡\";\nvar iff = \"⇔\";\nvar ifr = \"𝔦\";\nvar Ifr = \"ℑ\";\nvar Igrave$1 = \"Ì\";\nvar igrave$1 = \"ì\";\nvar ii = \"ⅈ\";\nvar iiiint = \"⨌\";\nvar iiint = \"∭\";\nvar iinfin = \"⧜\";\nvar iiota = \"℩\";\nvar IJlig = \"IJ\";\nvar ijlig = \"ij\";\nvar Imacr = \"Ī\";\nvar imacr = \"ī\";\nvar image = \"ℑ\";\nvar ImaginaryI = \"ⅈ\";\nvar imagline = \"ℐ\";\nvar imagpart = \"ℑ\";\nvar imath = \"ı\";\nvar Im = \"ℑ\";\nvar imof = \"⊷\";\nvar imped = \"Ƶ\";\nvar Implies = \"⇒\";\nvar incare = \"℅\";\nvar infin = \"∞\";\nvar infintie = \"⧝\";\nvar inodot = \"ı\";\nvar intcal = \"⊺\";\nvar int = \"∫\";\nvar Int = \"∬\";\nvar integers = \"ℤ\";\nvar Integral = \"∫\";\nvar intercal = \"⊺\";\nvar Intersection = \"⋂\";\nvar intlarhk = \"⨗\";\nvar intprod = \"⨼\";\nvar InvisibleComma = \"⁣\";\nvar InvisibleTimes = \"⁢\";\nvar IOcy = \"Ё\";\nvar iocy = \"ё\";\nvar Iogon = \"Į\";\nvar iogon = \"į\";\nvar Iopf = \"𝕀\";\nvar iopf = \"𝕚\";\nvar Iota = \"Ι\";\nvar iota = \"ι\";\nvar iprod = \"⨼\";\nvar iquest$1 = \"¿\";\nvar iscr = \"𝒾\";\nvar Iscr = \"ℐ\";\nvar isin = \"∈\";\nvar isindot = \"⋵\";\nvar isinE = \"⋹\";\nvar isins = \"⋴\";\nvar isinsv = \"⋳\";\nvar isinv = \"∈\";\nvar it = \"⁢\";\nvar Itilde = \"Ĩ\";\nvar itilde = \"ĩ\";\nvar Iukcy = \"І\";\nvar iukcy = \"і\";\nvar Iuml$1 = \"Ï\";\nvar iuml$1 = \"ï\";\nvar Jcirc = \"Ĵ\";\nvar jcirc = \"ĵ\";\nvar Jcy = \"Й\";\nvar jcy = \"й\";\nvar Jfr = \"𝔍\";\nvar jfr = \"𝔧\";\nvar jmath = \"ȷ\";\nvar Jopf = \"𝕁\";\nvar jopf = \"𝕛\";\nvar Jscr = \"𝒥\";\nvar jscr = \"𝒿\";\nvar Jsercy = \"Ј\";\nvar jsercy = \"ј\";\nvar Jukcy = \"Є\";\nvar jukcy = \"є\";\nvar Kappa = \"Κ\";\nvar kappa = \"κ\";\nvar kappav = \"ϰ\";\nvar Kcedil = \"Ķ\";\nvar kcedil = \"ķ\";\nvar Kcy = \"К\";\nvar kcy = \"к\";\nvar Kfr = \"𝔎\";\nvar kfr = \"𝔨\";\nvar kgreen = \"ĸ\";\nvar KHcy = \"Х\";\nvar khcy = \"х\";\nvar KJcy = \"Ќ\";\nvar kjcy = \"ќ\";\nvar Kopf = \"𝕂\";\nvar kopf = \"𝕜\";\nvar Kscr = \"𝒦\";\nvar kscr = \"𝓀\";\nvar lAarr = \"⇚\";\nvar Lacute = \"Ĺ\";\nvar lacute = \"ĺ\";\nvar laemptyv = \"⦴\";\nvar lagran = \"ℒ\";\nvar Lambda = \"Λ\";\nvar lambda = \"λ\";\nvar lang = \"⟨\";\nvar Lang = \"⟪\";\nvar langd = \"⦑\";\nvar langle = \"⟨\";\nvar lap = \"⪅\";\nvar Laplacetrf = \"ℒ\";\nvar laquo$1 = \"«\";\nvar larrb = \"⇤\";\nvar larrbfs = \"⤟\";\nvar larr = \"←\";\nvar Larr = \"↞\";\nvar lArr = \"⇐\";\nvar larrfs = \"⤝\";\nvar larrhk = \"↩\";\nvar larrlp = \"↫\";\nvar larrpl = \"⤹\";\nvar larrsim = \"⥳\";\nvar larrtl = \"↢\";\nvar latail = \"⤙\";\nvar lAtail = \"⤛\";\nvar lat = \"⪫\";\nvar late = \"⪭\";\nvar lates = \"⪭︀\";\nvar lbarr = \"⤌\";\nvar lBarr = \"⤎\";\nvar lbbrk = \"❲\";\nvar lbrace = \"{\";\nvar lbrack = \"[\";\nvar lbrke = \"⦋\";\nvar lbrksld = \"⦏\";\nvar lbrkslu = \"⦍\";\nvar Lcaron = \"Ľ\";\nvar lcaron = \"ľ\";\nvar Lcedil = \"Ļ\";\nvar lcedil = \"ļ\";\nvar lceil = \"⌈\";\nvar lcub = \"{\";\nvar Lcy = \"Л\";\nvar lcy = \"л\";\nvar ldca = \"⤶\";\nvar ldquo = \"“\";\nvar ldquor = \"„\";\nvar ldrdhar = \"⥧\";\nvar ldrushar = \"⥋\";\nvar ldsh = \"↲\";\nvar le = \"≤\";\nvar lE = \"≦\";\nvar LeftAngleBracket = \"⟨\";\nvar LeftArrowBar = \"⇤\";\nvar leftarrow = \"←\";\nvar LeftArrow = \"←\";\nvar Leftarrow = \"⇐\";\nvar LeftArrowRightArrow = \"⇆\";\nvar leftarrowtail = \"↢\";\nvar LeftCeiling = \"⌈\";\nvar LeftDoubleBracket = \"⟦\";\nvar LeftDownTeeVector = \"⥡\";\nvar LeftDownVectorBar = \"⥙\";\nvar LeftDownVector = \"⇃\";\nvar LeftFloor = \"⌊\";\nvar leftharpoondown = \"↽\";\nvar leftharpoonup = \"↼\";\nvar leftleftarrows = \"⇇\";\nvar leftrightarrow = \"↔\";\nvar LeftRightArrow = \"↔\";\nvar Leftrightarrow = \"⇔\";\nvar leftrightarrows = \"⇆\";\nvar leftrightharpoons = \"⇋\";\nvar leftrightsquigarrow = \"↭\";\nvar LeftRightVector = \"⥎\";\nvar LeftTeeArrow = \"↤\";\nvar LeftTee = \"⊣\";\nvar LeftTeeVector = \"⥚\";\nvar leftthreetimes = \"⋋\";\nvar LeftTriangleBar = \"⧏\";\nvar LeftTriangle = \"⊲\";\nvar LeftTriangleEqual = \"⊴\";\nvar LeftUpDownVector = \"⥑\";\nvar LeftUpTeeVector = \"⥠\";\nvar LeftUpVectorBar = \"⥘\";\nvar LeftUpVector = \"↿\";\nvar LeftVectorBar = \"⥒\";\nvar LeftVector = \"↼\";\nvar lEg = \"⪋\";\nvar leg = \"⋚\";\nvar leq = \"≤\";\nvar leqq = \"≦\";\nvar leqslant = \"⩽\";\nvar lescc = \"⪨\";\nvar les = \"⩽\";\nvar lesdot = \"⩿\";\nvar lesdoto = \"⪁\";\nvar lesdotor = \"⪃\";\nvar lesg = \"⋚︀\";\nvar lesges = \"⪓\";\nvar lessapprox = \"⪅\";\nvar lessdot = \"⋖\";\nvar lesseqgtr = \"⋚\";\nvar lesseqqgtr = \"⪋\";\nvar LessEqualGreater = \"⋚\";\nvar LessFullEqual = \"≦\";\nvar LessGreater = \"≶\";\nvar lessgtr = \"≶\";\nvar LessLess = \"⪡\";\nvar lesssim = \"≲\";\nvar LessSlantEqual = \"⩽\";\nvar LessTilde = \"≲\";\nvar lfisht = \"⥼\";\nvar lfloor = \"⌊\";\nvar Lfr = \"𝔏\";\nvar lfr = \"𝔩\";\nvar lg = \"≶\";\nvar lgE = \"⪑\";\nvar lHar = \"⥢\";\nvar lhard = \"↽\";\nvar lharu = \"↼\";\nvar lharul = \"⥪\";\nvar lhblk = \"▄\";\nvar LJcy = \"Љ\";\nvar ljcy = \"љ\";\nvar llarr = \"⇇\";\nvar ll = \"≪\";\nvar Ll = \"⋘\";\nvar llcorner = \"⌞\";\nvar Lleftarrow = \"⇚\";\nvar llhard = \"⥫\";\nvar lltri = \"◺\";\nvar Lmidot = \"Ŀ\";\nvar lmidot = \"ŀ\";\nvar lmoustache = \"⎰\";\nvar lmoust = \"⎰\";\nvar lnap = \"⪉\";\nvar lnapprox = \"⪉\";\nvar lne = \"⪇\";\nvar lnE = \"≨\";\nvar lneq = \"⪇\";\nvar lneqq = \"≨\";\nvar lnsim = \"⋦\";\nvar loang = \"⟬\";\nvar loarr = \"⇽\";\nvar lobrk = \"⟦\";\nvar longleftarrow = \"⟵\";\nvar LongLeftArrow = \"⟵\";\nvar Longleftarrow = \"⟸\";\nvar longleftrightarrow = \"⟷\";\nvar LongLeftRightArrow = \"⟷\";\nvar Longleftrightarrow = \"⟺\";\nvar longmapsto = \"⟼\";\nvar longrightarrow = \"⟶\";\nvar LongRightArrow = \"⟶\";\nvar Longrightarrow = \"⟹\";\nvar looparrowleft = \"↫\";\nvar looparrowright = \"↬\";\nvar lopar = \"⦅\";\nvar Lopf = \"𝕃\";\nvar lopf = \"𝕝\";\nvar loplus = \"⨭\";\nvar lotimes = \"⨴\";\nvar lowast = \"∗\";\nvar lowbar = \"_\";\nvar LowerLeftArrow = \"↙\";\nvar LowerRightArrow = \"↘\";\nvar loz = \"◊\";\nvar lozenge = \"◊\";\nvar lozf = \"⧫\";\nvar lpar = \"(\";\nvar lparlt = \"⦓\";\nvar lrarr = \"⇆\";\nvar lrcorner = \"⌟\";\nvar lrhar = \"⇋\";\nvar lrhard = \"⥭\";\nvar lrm = \"‎\";\nvar lrtri = \"⊿\";\nvar lsaquo = \"‹\";\nvar lscr = \"𝓁\";\nvar Lscr = \"ℒ\";\nvar lsh = \"↰\";\nvar Lsh = \"↰\";\nvar lsim = \"≲\";\nvar lsime = \"⪍\";\nvar lsimg = \"⪏\";\nvar lsqb = \"[\";\nvar lsquo = \"‘\";\nvar lsquor = \"‚\";\nvar Lstrok = \"Ł\";\nvar lstrok = \"ł\";\nvar ltcc = \"⪦\";\nvar ltcir = \"⩹\";\nvar lt$2 = \"<\";\nvar LT$1 = \"<\";\nvar Lt = \"≪\";\nvar ltdot = \"⋖\";\nvar lthree = \"⋋\";\nvar ltimes = \"⋉\";\nvar ltlarr = \"⥶\";\nvar ltquest = \"⩻\";\nvar ltri = \"◃\";\nvar ltrie = \"⊴\";\nvar ltrif = \"◂\";\nvar ltrPar = \"⦖\";\nvar lurdshar = \"⥊\";\nvar luruhar = \"⥦\";\nvar lvertneqq = \"≨︀\";\nvar lvnE = \"≨︀\";\nvar macr$1 = \"¯\";\nvar male = \"♂\";\nvar malt = \"✠\";\nvar maltese = \"✠\";\nvar map = \"↦\";\nvar mapsto = \"↦\";\nvar mapstodown = \"↧\";\nvar mapstoleft = \"↤\";\nvar mapstoup = \"↥\";\nvar marker = \"▮\";\nvar mcomma = \"⨩\";\nvar Mcy = \"М\";\nvar mcy = \"м\";\nvar mdash = \"—\";\nvar mDDot = \"∺\";\nvar measuredangle = \"∡\";\nvar MediumSpace = \" \";\nvar Mellintrf = \"ℳ\";\nvar Mfr = \"𝔐\";\nvar mfr = \"𝔪\";\nvar mho = \"℧\";\nvar micro$1 = \"µ\";\nvar midast = \"*\";\nvar midcir = \"⫰\";\nvar mid = \"∣\";\nvar middot$1 = \"·\";\nvar minusb = \"⊟\";\nvar minus = \"−\";\nvar minusd = \"∸\";\nvar minusdu = \"⨪\";\nvar MinusPlus = \"∓\";\nvar mlcp = \"⫛\";\nvar mldr = \"…\";\nvar mnplus = \"∓\";\nvar models = \"⊧\";\nvar Mopf = \"𝕄\";\nvar mopf = \"𝕞\";\nvar mp = \"∓\";\nvar mscr = \"𝓂\";\nvar Mscr = \"ℳ\";\nvar mstpos = \"∾\";\nvar Mu = \"Μ\";\nvar mu = \"μ\";\nvar multimap = \"⊸\";\nvar mumap = \"⊸\";\nvar nabla = \"∇\";\nvar Nacute = \"Ń\";\nvar nacute = \"ń\";\nvar nang = \"∠⃒\";\nvar nap = \"≉\";\nvar napE = \"⩰̸\";\nvar napid = \"≋̸\";\nvar napos = \"ʼn\";\nvar napprox = \"≉\";\nvar natural = \"♮\";\nvar naturals = \"ℕ\";\nvar natur = \"♮\";\nvar nbsp$1 = \" \";\nvar nbump = \"≎̸\";\nvar nbumpe = \"≏̸\";\nvar ncap = \"⩃\";\nvar Ncaron = \"Ň\";\nvar ncaron = \"ň\";\nvar Ncedil = \"Ņ\";\nvar ncedil = \"ņ\";\nvar ncong = \"≇\";\nvar ncongdot = \"⩭̸\";\nvar ncup = \"⩂\";\nvar Ncy = \"Н\";\nvar ncy = \"н\";\nvar ndash = \"–\";\nvar nearhk = \"⤤\";\nvar nearr = \"↗\";\nvar neArr = \"⇗\";\nvar nearrow = \"↗\";\nvar ne = \"≠\";\nvar nedot = \"≐̸\";\nvar NegativeMediumSpace = \"​\";\nvar NegativeThickSpace = \"​\";\nvar NegativeThinSpace = \"​\";\nvar NegativeVeryThinSpace = \"​\";\nvar nequiv = \"≢\";\nvar nesear = \"⤨\";\nvar nesim = \"≂̸\";\nvar NestedGreaterGreater = \"≫\";\nvar NestedLessLess = \"≪\";\nvar NewLine = \"\\n\";\nvar nexist = \"∄\";\nvar nexists = \"∄\";\nvar Nfr = \"𝔑\";\nvar nfr = \"𝔫\";\nvar ngE = \"≧̸\";\nvar nge = \"≱\";\nvar ngeq = \"≱\";\nvar ngeqq = \"≧̸\";\nvar ngeqslant = \"⩾̸\";\nvar nges = \"⩾̸\";\nvar nGg = \"⋙̸\";\nvar ngsim = \"≵\";\nvar nGt = \"≫⃒\";\nvar ngt = \"≯\";\nvar ngtr = \"≯\";\nvar nGtv = \"≫̸\";\nvar nharr = \"↮\";\nvar nhArr = \"⇎\";\nvar nhpar = \"⫲\";\nvar ni = \"∋\";\nvar nis = \"⋼\";\nvar nisd = \"⋺\";\nvar niv = \"∋\";\nvar NJcy = \"Њ\";\nvar njcy = \"њ\";\nvar nlarr = \"↚\";\nvar nlArr = \"⇍\";\nvar nldr = \"‥\";\nvar nlE = \"≦̸\";\nvar nle = \"≰\";\nvar nleftarrow = \"↚\";\nvar nLeftarrow = \"⇍\";\nvar nleftrightarrow = \"↮\";\nvar nLeftrightarrow = \"⇎\";\nvar nleq = \"≰\";\nvar nleqq = \"≦̸\";\nvar nleqslant = \"⩽̸\";\nvar nles = \"⩽̸\";\nvar nless = \"≮\";\nvar nLl = \"⋘̸\";\nvar nlsim = \"≴\";\nvar nLt = \"≪⃒\";\nvar nlt = \"≮\";\nvar nltri = \"⋪\";\nvar nltrie = \"⋬\";\nvar nLtv = \"≪̸\";\nvar nmid = \"∤\";\nvar NoBreak = \"⁠\";\nvar NonBreakingSpace = \" \";\nvar nopf = \"𝕟\";\nvar Nopf = \"ℕ\";\nvar Not = \"⫬\";\nvar not$1 = \"¬\";\nvar NotCongruent = \"≢\";\nvar NotCupCap = \"≭\";\nvar NotDoubleVerticalBar = \"∦\";\nvar NotElement = \"∉\";\nvar NotEqual = \"≠\";\nvar NotEqualTilde = \"≂̸\";\nvar NotExists = \"∄\";\nvar NotGreater = \"≯\";\nvar NotGreaterEqual = \"≱\";\nvar NotGreaterFullEqual = \"≧̸\";\nvar NotGreaterGreater = \"≫̸\";\nvar NotGreaterLess = \"≹\";\nvar NotGreaterSlantEqual = \"⩾̸\";\nvar NotGreaterTilde = \"≵\";\nvar NotHumpDownHump = \"≎̸\";\nvar NotHumpEqual = \"≏̸\";\nvar notin = \"∉\";\nvar notindot = \"⋵̸\";\nvar notinE = \"⋹̸\";\nvar notinva = \"∉\";\nvar notinvb = \"⋷\";\nvar notinvc = \"⋶\";\nvar NotLeftTriangleBar = \"⧏̸\";\nvar NotLeftTriangle = \"⋪\";\nvar NotLeftTriangleEqual = \"⋬\";\nvar NotLess = \"≮\";\nvar NotLessEqual = \"≰\";\nvar NotLessGreater = \"≸\";\nvar NotLessLess = \"≪̸\";\nvar NotLessSlantEqual = \"⩽̸\";\nvar NotLessTilde = \"≴\";\nvar NotNestedGreaterGreater = \"⪢̸\";\nvar NotNestedLessLess = \"⪡̸\";\nvar notni = \"∌\";\nvar notniva = \"∌\";\nvar notnivb = \"⋾\";\nvar notnivc = \"⋽\";\nvar NotPrecedes = \"⊀\";\nvar NotPrecedesEqual = \"⪯̸\";\nvar NotPrecedesSlantEqual = \"⋠\";\nvar NotReverseElement = \"∌\";\nvar NotRightTriangleBar = \"⧐̸\";\nvar NotRightTriangle = \"⋫\";\nvar NotRightTriangleEqual = \"⋭\";\nvar NotSquareSubset = \"⊏̸\";\nvar NotSquareSubsetEqual = \"⋢\";\nvar NotSquareSuperset = \"⊐̸\";\nvar NotSquareSupersetEqual = \"⋣\";\nvar NotSubset = \"⊂⃒\";\nvar NotSubsetEqual = \"⊈\";\nvar NotSucceeds = \"⊁\";\nvar NotSucceedsEqual = \"⪰̸\";\nvar NotSucceedsSlantEqual = \"⋡\";\nvar NotSucceedsTilde = \"≿̸\";\nvar NotSuperset = \"⊃⃒\";\nvar NotSupersetEqual = \"⊉\";\nvar NotTilde = \"≁\";\nvar NotTildeEqual = \"≄\";\nvar NotTildeFullEqual = \"≇\";\nvar NotTildeTilde = \"≉\";\nvar NotVerticalBar = \"∤\";\nvar nparallel = \"∦\";\nvar npar = \"∦\";\nvar nparsl = \"⫽⃥\";\nvar npart = \"∂̸\";\nvar npolint = \"⨔\";\nvar npr = \"⊀\";\nvar nprcue = \"⋠\";\nvar nprec = \"⊀\";\nvar npreceq = \"⪯̸\";\nvar npre = \"⪯̸\";\nvar nrarrc = \"⤳̸\";\nvar nrarr = \"↛\";\nvar nrArr = \"⇏\";\nvar nrarrw = \"↝̸\";\nvar nrightarrow = \"↛\";\nvar nRightarrow = \"⇏\";\nvar nrtri = \"⋫\";\nvar nrtrie = \"⋭\";\nvar nsc = \"⊁\";\nvar nsccue = \"⋡\";\nvar nsce = \"⪰̸\";\nvar Nscr = \"𝒩\";\nvar nscr = \"𝓃\";\nvar nshortmid = \"∤\";\nvar nshortparallel = \"∦\";\nvar nsim = \"≁\";\nvar nsime = \"≄\";\nvar nsimeq = \"≄\";\nvar nsmid = \"∤\";\nvar nspar = \"∦\";\nvar nsqsube = \"⋢\";\nvar nsqsupe = \"⋣\";\nvar nsub = \"⊄\";\nvar nsubE = \"⫅̸\";\nvar nsube = \"⊈\";\nvar nsubset = \"⊂⃒\";\nvar nsubseteq = \"⊈\";\nvar nsubseteqq = \"⫅̸\";\nvar nsucc = \"⊁\";\nvar nsucceq = \"⪰̸\";\nvar nsup = \"⊅\";\nvar nsupE = \"⫆̸\";\nvar nsupe = \"⊉\";\nvar nsupset = \"⊃⃒\";\nvar nsupseteq = \"⊉\";\nvar nsupseteqq = \"⫆̸\";\nvar ntgl = \"≹\";\nvar Ntilde$1 = \"Ñ\";\nvar ntilde$1 = \"ñ\";\nvar ntlg = \"≸\";\nvar ntriangleleft = \"⋪\";\nvar ntrianglelefteq = \"⋬\";\nvar ntriangleright = \"⋫\";\nvar ntrianglerighteq = \"⋭\";\nvar Nu = \"Ν\";\nvar nu = \"ν\";\nvar num = \"#\";\nvar numero = \"№\";\nvar numsp = \" \";\nvar nvap = \"≍⃒\";\nvar nvdash = \"⊬\";\nvar nvDash = \"⊭\";\nvar nVdash = \"⊮\";\nvar nVDash = \"⊯\";\nvar nvge = \"≥⃒\";\nvar nvgt = \">⃒\";\nvar nvHarr = \"⤄\";\nvar nvinfin = \"⧞\";\nvar nvlArr = \"⤂\";\nvar nvle = \"≤⃒\";\nvar nvlt = \"<⃒\";\nvar nvltrie = \"⊴⃒\";\nvar nvrArr = \"⤃\";\nvar nvrtrie = \"⊵⃒\";\nvar nvsim = \"∼⃒\";\nvar nwarhk = \"⤣\";\nvar nwarr = \"↖\";\nvar nwArr = \"⇖\";\nvar nwarrow = \"↖\";\nvar nwnear = \"⤧\";\nvar Oacute$1 = \"Ó\";\nvar oacute$1 = \"ó\";\nvar oast = \"⊛\";\nvar Ocirc$1 = \"Ô\";\nvar ocirc$1 = \"ô\";\nvar ocir = \"⊚\";\nvar Ocy = \"О\";\nvar ocy = \"о\";\nvar odash = \"⊝\";\nvar Odblac = \"Ő\";\nvar odblac = \"ő\";\nvar odiv = \"⨸\";\nvar odot = \"⊙\";\nvar odsold = \"⦼\";\nvar OElig = \"Œ\";\nvar oelig = \"œ\";\nvar ofcir = \"⦿\";\nvar Ofr = \"𝔒\";\nvar ofr = \"𝔬\";\nvar ogon = \"˛\";\nvar Ograve$1 = \"Ò\";\nvar ograve$1 = \"ò\";\nvar ogt = \"⧁\";\nvar ohbar = \"⦵\";\nvar ohm = \"Ω\";\nvar oint = \"∮\";\nvar olarr = \"↺\";\nvar olcir = \"⦾\";\nvar olcross = \"⦻\";\nvar oline = \"‾\";\nvar olt = \"⧀\";\nvar Omacr = \"Ō\";\nvar omacr = \"ō\";\nvar Omega = \"Ω\";\nvar omega = \"ω\";\nvar Omicron = \"Ο\";\nvar omicron = \"ο\";\nvar omid = \"⦶\";\nvar ominus = \"⊖\";\nvar Oopf = \"𝕆\";\nvar oopf = \"𝕠\";\nvar opar = \"⦷\";\nvar OpenCurlyDoubleQuote = \"“\";\nvar OpenCurlyQuote = \"‘\";\nvar operp = \"⦹\";\nvar oplus = \"⊕\";\nvar orarr = \"↻\";\nvar Or = \"⩔\";\nvar or = \"∨\";\nvar ord = \"⩝\";\nvar order = \"ℴ\";\nvar orderof = \"ℴ\";\nvar ordf$1 = \"ª\";\nvar ordm$1 = \"º\";\nvar origof = \"⊶\";\nvar oror = \"⩖\";\nvar orslope = \"⩗\";\nvar orv = \"⩛\";\nvar oS = \"Ⓢ\";\nvar Oscr = \"𝒪\";\nvar oscr = \"ℴ\";\nvar Oslash$1 = \"Ø\";\nvar oslash$1 = \"ø\";\nvar osol = \"⊘\";\nvar Otilde$1 = \"Õ\";\nvar otilde$1 = \"õ\";\nvar otimesas = \"⨶\";\nvar Otimes = \"⨷\";\nvar otimes = \"⊗\";\nvar Ouml$1 = \"Ö\";\nvar ouml$1 = \"ö\";\nvar ovbar = \"⌽\";\nvar OverBar = \"‾\";\nvar OverBrace = \"⏞\";\nvar OverBracket = \"⎴\";\nvar OverParenthesis = \"⏜\";\nvar para$1 = \"¶\";\nvar parallel = \"∥\";\nvar par = \"∥\";\nvar parsim = \"⫳\";\nvar parsl = \"⫽\";\nvar part = \"∂\";\nvar PartialD = \"∂\";\nvar Pcy = \"П\";\nvar pcy = \"п\";\nvar percnt = \"%\";\nvar period = \".\";\nvar permil = \"‰\";\nvar perp = \"⊥\";\nvar pertenk = \"‱\";\nvar Pfr = \"𝔓\";\nvar pfr = \"𝔭\";\nvar Phi = \"Φ\";\nvar phi = \"φ\";\nvar phiv = \"ϕ\";\nvar phmmat = \"ℳ\";\nvar phone = \"☎\";\nvar Pi = \"Π\";\nvar pi = \"π\";\nvar pitchfork = \"⋔\";\nvar piv = \"ϖ\";\nvar planck = \"ℏ\";\nvar planckh = \"ℎ\";\nvar plankv = \"ℏ\";\nvar plusacir = \"⨣\";\nvar plusb = \"⊞\";\nvar pluscir = \"⨢\";\nvar plus = \"+\";\nvar plusdo = \"∔\";\nvar plusdu = \"⨥\";\nvar pluse = \"⩲\";\nvar PlusMinus = \"±\";\nvar plusmn$1 = \"±\";\nvar plussim = \"⨦\";\nvar plustwo = \"⨧\";\nvar pm = \"±\";\nvar Poincareplane = \"ℌ\";\nvar pointint = \"⨕\";\nvar popf = \"𝕡\";\nvar Popf = \"ℙ\";\nvar pound$1 = \"£\";\nvar prap = \"⪷\";\nvar Pr = \"⪻\";\nvar pr = \"≺\";\nvar prcue = \"≼\";\nvar precapprox = \"⪷\";\nvar prec = \"≺\";\nvar preccurlyeq = \"≼\";\nvar Precedes = \"≺\";\nvar PrecedesEqual = \"⪯\";\nvar PrecedesSlantEqual = \"≼\";\nvar PrecedesTilde = \"≾\";\nvar preceq = \"⪯\";\nvar precnapprox = \"⪹\";\nvar precneqq = \"⪵\";\nvar precnsim = \"⋨\";\nvar pre = \"⪯\";\nvar prE = \"⪳\";\nvar precsim = \"≾\";\nvar prime = \"′\";\nvar Prime = \"″\";\nvar primes = \"ℙ\";\nvar prnap = \"⪹\";\nvar prnE = \"⪵\";\nvar prnsim = \"⋨\";\nvar prod = \"∏\";\nvar Product = \"∏\";\nvar profalar = \"⌮\";\nvar profline = \"⌒\";\nvar profsurf = \"⌓\";\nvar prop = \"∝\";\nvar Proportional = \"∝\";\nvar Proportion = \"∷\";\nvar propto = \"∝\";\nvar prsim = \"≾\";\nvar prurel = \"⊰\";\nvar Pscr = \"𝒫\";\nvar pscr = \"𝓅\";\nvar Psi = \"Ψ\";\nvar psi = \"ψ\";\nvar puncsp = \" \";\nvar Qfr = \"𝔔\";\nvar qfr = \"𝔮\";\nvar qint = \"⨌\";\nvar qopf = \"𝕢\";\nvar Qopf = \"ℚ\";\nvar qprime = \"⁗\";\nvar Qscr = \"𝒬\";\nvar qscr = \"𝓆\";\nvar quaternions = \"ℍ\";\nvar quatint = \"⨖\";\nvar quest = \"?\";\nvar questeq = \"≟\";\nvar quot$2 = \"\\\"\";\nvar QUOT$1 = \"\\\"\";\nvar rAarr = \"⇛\";\nvar race = \"∽̱\";\nvar Racute = \"Ŕ\";\nvar racute = \"ŕ\";\nvar radic = \"√\";\nvar raemptyv = \"⦳\";\nvar rang = \"⟩\";\nvar Rang = \"⟫\";\nvar rangd = \"⦒\";\nvar range = \"⦥\";\nvar rangle = \"⟩\";\nvar raquo$1 = \"»\";\nvar rarrap = \"⥵\";\nvar rarrb = \"⇥\";\nvar rarrbfs = \"⤠\";\nvar rarrc = \"⤳\";\nvar rarr = \"→\";\nvar Rarr = \"↠\";\nvar rArr = \"⇒\";\nvar rarrfs = \"⤞\";\nvar rarrhk = \"↪\";\nvar rarrlp = \"↬\";\nvar rarrpl = \"⥅\";\nvar rarrsim = \"⥴\";\nvar Rarrtl = \"⤖\";\nvar rarrtl = \"↣\";\nvar rarrw = \"↝\";\nvar ratail = \"⤚\";\nvar rAtail = \"⤜\";\nvar ratio = \"∶\";\nvar rationals = \"ℚ\";\nvar rbarr = \"⤍\";\nvar rBarr = \"⤏\";\nvar RBarr = \"⤐\";\nvar rbbrk = \"❳\";\nvar rbrace = \"}\";\nvar rbrack = \"]\";\nvar rbrke = \"⦌\";\nvar rbrksld = \"⦎\";\nvar rbrkslu = \"⦐\";\nvar Rcaron = \"Ř\";\nvar rcaron = \"ř\";\nvar Rcedil = \"Ŗ\";\nvar rcedil = \"ŗ\";\nvar rceil = \"⌉\";\nvar rcub = \"}\";\nvar Rcy = \"Р\";\nvar rcy = \"р\";\nvar rdca = \"⤷\";\nvar rdldhar = \"⥩\";\nvar rdquo = \"”\";\nvar rdquor = \"”\";\nvar rdsh = \"↳\";\nvar real = \"ℜ\";\nvar realine = \"ℛ\";\nvar realpart = \"ℜ\";\nvar reals = \"ℝ\";\nvar Re = \"ℜ\";\nvar rect = \"▭\";\nvar reg$1 = \"®\";\nvar REG$1 = \"®\";\nvar ReverseElement = \"∋\";\nvar ReverseEquilibrium = \"⇋\";\nvar ReverseUpEquilibrium = \"⥯\";\nvar rfisht = \"⥽\";\nvar rfloor = \"⌋\";\nvar rfr = \"𝔯\";\nvar Rfr = \"ℜ\";\nvar rHar = \"⥤\";\nvar rhard = \"⇁\";\nvar rharu = \"⇀\";\nvar rharul = \"⥬\";\nvar Rho = \"Ρ\";\nvar rho = \"ρ\";\nvar rhov = \"ϱ\";\nvar RightAngleBracket = \"⟩\";\nvar RightArrowBar = \"⇥\";\nvar rightarrow = \"→\";\nvar RightArrow = \"→\";\nvar Rightarrow = \"⇒\";\nvar RightArrowLeftArrow = \"⇄\";\nvar rightarrowtail = \"↣\";\nvar RightCeiling = \"⌉\";\nvar RightDoubleBracket = \"⟧\";\nvar RightDownTeeVector = \"⥝\";\nvar RightDownVectorBar = \"⥕\";\nvar RightDownVector = \"⇂\";\nvar RightFloor = \"⌋\";\nvar rightharpoondown = \"⇁\";\nvar rightharpoonup = \"⇀\";\nvar rightleftarrows = \"⇄\";\nvar rightleftharpoons = \"⇌\";\nvar rightrightarrows = \"⇉\";\nvar rightsquigarrow = \"↝\";\nvar RightTeeArrow = \"↦\";\nvar RightTee = \"⊢\";\nvar RightTeeVector = \"⥛\";\nvar rightthreetimes = \"⋌\";\nvar RightTriangleBar = \"⧐\";\nvar RightTriangle = \"⊳\";\nvar RightTriangleEqual = \"⊵\";\nvar RightUpDownVector = \"⥏\";\nvar RightUpTeeVector = \"⥜\";\nvar RightUpVectorBar = \"⥔\";\nvar RightUpVector = \"↾\";\nvar RightVectorBar = \"⥓\";\nvar RightVector = \"⇀\";\nvar ring = \"˚\";\nvar risingdotseq = \"≓\";\nvar rlarr = \"⇄\";\nvar rlhar = \"⇌\";\nvar rlm = \"‏\";\nvar rmoustache = \"⎱\";\nvar rmoust = \"⎱\";\nvar rnmid = \"⫮\";\nvar roang = \"⟭\";\nvar roarr = \"⇾\";\nvar robrk = \"⟧\";\nvar ropar = \"⦆\";\nvar ropf = \"𝕣\";\nvar Ropf = \"ℝ\";\nvar roplus = \"⨮\";\nvar rotimes = \"⨵\";\nvar RoundImplies = \"⥰\";\nvar rpar = \")\";\nvar rpargt = \"⦔\";\nvar rppolint = \"⨒\";\nvar rrarr = \"⇉\";\nvar Rrightarrow = \"⇛\";\nvar rsaquo = \"›\";\nvar rscr = \"𝓇\";\nvar Rscr = \"ℛ\";\nvar rsh = \"↱\";\nvar Rsh = \"↱\";\nvar rsqb = \"]\";\nvar rsquo = \"’\";\nvar rsquor = \"’\";\nvar rthree = \"⋌\";\nvar rtimes = \"⋊\";\nvar rtri = \"▹\";\nvar rtrie = \"⊵\";\nvar rtrif = \"▸\";\nvar rtriltri = \"⧎\";\nvar RuleDelayed = \"⧴\";\nvar ruluhar = \"⥨\";\nvar rx = \"℞\";\nvar Sacute = \"Ś\";\nvar sacute = \"ś\";\nvar sbquo = \"‚\";\nvar scap = \"⪸\";\nvar Scaron = \"Š\";\nvar scaron = \"š\";\nvar Sc = \"⪼\";\nvar sc = \"≻\";\nvar sccue = \"≽\";\nvar sce = \"⪰\";\nvar scE = \"⪴\";\nvar Scedil = \"Ş\";\nvar scedil = \"ş\";\nvar Scirc = \"Ŝ\";\nvar scirc = \"ŝ\";\nvar scnap = \"⪺\";\nvar scnE = \"⪶\";\nvar scnsim = \"⋩\";\nvar scpolint = \"⨓\";\nvar scsim = \"≿\";\nvar Scy = \"С\";\nvar scy = \"с\";\nvar sdotb = \"⊡\";\nvar sdot = \"⋅\";\nvar sdote = \"⩦\";\nvar searhk = \"⤥\";\nvar searr = \"↘\";\nvar seArr = \"⇘\";\nvar searrow = \"↘\";\nvar sect$1 = \"§\";\nvar semi = \";\";\nvar seswar = \"⤩\";\nvar setminus = \"∖\";\nvar setmn = \"∖\";\nvar sext = \"✶\";\nvar Sfr = \"𝔖\";\nvar sfr = \"𝔰\";\nvar sfrown = \"⌢\";\nvar sharp = \"♯\";\nvar SHCHcy = \"Щ\";\nvar shchcy = \"щ\";\nvar SHcy = \"Ш\";\nvar shcy = \"ш\";\nvar ShortDownArrow = \"↓\";\nvar ShortLeftArrow = \"←\";\nvar shortmid = \"∣\";\nvar shortparallel = \"∥\";\nvar ShortRightArrow = \"→\";\nvar ShortUpArrow = \"↑\";\nvar shy$1 = \"­\";\nvar Sigma = \"Σ\";\nvar sigma = \"σ\";\nvar sigmaf = \"ς\";\nvar sigmav = \"ς\";\nvar sim = \"∼\";\nvar simdot = \"⩪\";\nvar sime = \"≃\";\nvar simeq = \"≃\";\nvar simg = \"⪞\";\nvar simgE = \"⪠\";\nvar siml = \"⪝\";\nvar simlE = \"⪟\";\nvar simne = \"≆\";\nvar simplus = \"⨤\";\nvar simrarr = \"⥲\";\nvar slarr = \"←\";\nvar SmallCircle = \"∘\";\nvar smallsetminus = \"∖\";\nvar smashp = \"⨳\";\nvar smeparsl = \"⧤\";\nvar smid = \"∣\";\nvar smile = \"⌣\";\nvar smt = \"⪪\";\nvar smte = \"⪬\";\nvar smtes = \"⪬︀\";\nvar SOFTcy = \"Ь\";\nvar softcy = \"ь\";\nvar solbar = \"⌿\";\nvar solb = \"⧄\";\nvar sol = \"/\";\nvar Sopf = \"𝕊\";\nvar sopf = \"𝕤\";\nvar spades = \"♠\";\nvar spadesuit = \"♠\";\nvar spar = \"∥\";\nvar sqcap = \"⊓\";\nvar sqcaps = \"⊓︀\";\nvar sqcup = \"⊔\";\nvar sqcups = \"⊔︀\";\nvar Sqrt = \"√\";\nvar sqsub = \"⊏\";\nvar sqsube = \"⊑\";\nvar sqsubset = \"⊏\";\nvar sqsubseteq = \"⊑\";\nvar sqsup = \"⊐\";\nvar sqsupe = \"⊒\";\nvar sqsupset = \"⊐\";\nvar sqsupseteq = \"⊒\";\nvar square = \"□\";\nvar Square = \"□\";\nvar SquareIntersection = \"⊓\";\nvar SquareSubset = \"⊏\";\nvar SquareSubsetEqual = \"⊑\";\nvar SquareSuperset = \"⊐\";\nvar SquareSupersetEqual = \"⊒\";\nvar SquareUnion = \"⊔\";\nvar squarf = \"▪\";\nvar squ = \"□\";\nvar squf = \"▪\";\nvar srarr = \"→\";\nvar Sscr = \"𝒮\";\nvar sscr = \"𝓈\";\nvar ssetmn = \"∖\";\nvar ssmile = \"⌣\";\nvar sstarf = \"⋆\";\nvar Star = \"⋆\";\nvar star = \"☆\";\nvar starf = \"★\";\nvar straightepsilon = \"ϵ\";\nvar straightphi = \"ϕ\";\nvar strns = \"¯\";\nvar sub = \"⊂\";\nvar Sub = \"⋐\";\nvar subdot = \"⪽\";\nvar subE = \"⫅\";\nvar sube = \"⊆\";\nvar subedot = \"⫃\";\nvar submult = \"⫁\";\nvar subnE = \"⫋\";\nvar subne = \"⊊\";\nvar subplus = \"⪿\";\nvar subrarr = \"⥹\";\nvar subset = \"⊂\";\nvar Subset = \"⋐\";\nvar subseteq = \"⊆\";\nvar subseteqq = \"⫅\";\nvar SubsetEqual = \"⊆\";\nvar subsetneq = \"⊊\";\nvar subsetneqq = \"⫋\";\nvar subsim = \"⫇\";\nvar subsub = \"⫕\";\nvar subsup = \"⫓\";\nvar succapprox = \"⪸\";\nvar succ = \"≻\";\nvar succcurlyeq = \"≽\";\nvar Succeeds = \"≻\";\nvar SucceedsEqual = \"⪰\";\nvar SucceedsSlantEqual = \"≽\";\nvar SucceedsTilde = \"≿\";\nvar succeq = \"⪰\";\nvar succnapprox = \"⪺\";\nvar succneqq = \"⪶\";\nvar succnsim = \"⋩\";\nvar succsim = \"≿\";\nvar SuchThat = \"∋\";\nvar sum = \"∑\";\nvar Sum = \"∑\";\nvar sung = \"♪\";\nvar sup1$1 = \"¹\";\nvar sup2$1 = \"²\";\nvar sup3$1 = \"³\";\nvar sup = \"⊃\";\nvar Sup = \"⋑\";\nvar supdot = \"⪾\";\nvar supdsub = \"⫘\";\nvar supE = \"⫆\";\nvar supe = \"⊇\";\nvar supedot = \"⫄\";\nvar Superset = \"⊃\";\nvar SupersetEqual = \"⊇\";\nvar suphsol = \"⟉\";\nvar suphsub = \"⫗\";\nvar suplarr = \"⥻\";\nvar supmult = \"⫂\";\nvar supnE = \"⫌\";\nvar supne = \"⊋\";\nvar supplus = \"⫀\";\nvar supset = \"⊃\";\nvar Supset = \"⋑\";\nvar supseteq = \"⊇\";\nvar supseteqq = \"⫆\";\nvar supsetneq = \"⊋\";\nvar supsetneqq = \"⫌\";\nvar supsim = \"⫈\";\nvar supsub = \"⫔\";\nvar supsup = \"⫖\";\nvar swarhk = \"⤦\";\nvar swarr = \"↙\";\nvar swArr = \"⇙\";\nvar swarrow = \"↙\";\nvar swnwar = \"⤪\";\nvar szlig$1 = \"ß\";\nvar Tab = \"\\t\";\nvar target = \"⌖\";\nvar Tau = \"Τ\";\nvar tau = \"τ\";\nvar tbrk = \"⎴\";\nvar Tcaron = \"Ť\";\nvar tcaron = \"ť\";\nvar Tcedil = \"Ţ\";\nvar tcedil = \"ţ\";\nvar Tcy = \"Т\";\nvar tcy = \"т\";\nvar tdot = \"⃛\";\nvar telrec = \"⌕\";\nvar Tfr = \"𝔗\";\nvar tfr = \"𝔱\";\nvar there4 = \"∴\";\nvar therefore = \"∴\";\nvar Therefore = \"∴\";\nvar Theta = \"Θ\";\nvar theta = \"θ\";\nvar thetasym = \"ϑ\";\nvar thetav = \"ϑ\";\nvar thickapprox = \"≈\";\nvar thicksim = \"∼\";\nvar ThickSpace = \"  \";\nvar ThinSpace = \" \";\nvar thinsp = \" \";\nvar thkap = \"≈\";\nvar thksim = \"∼\";\nvar THORN$1 = \"Þ\";\nvar thorn$1 = \"þ\";\nvar tilde = \"˜\";\nvar Tilde = \"∼\";\nvar TildeEqual = \"≃\";\nvar TildeFullEqual = \"≅\";\nvar TildeTilde = \"≈\";\nvar timesbar = \"⨱\";\nvar timesb = \"⊠\";\nvar times$1 = \"×\";\nvar timesd = \"⨰\";\nvar tint = \"∭\";\nvar toea = \"⤨\";\nvar topbot = \"⌶\";\nvar topcir = \"⫱\";\nvar top = \"⊤\";\nvar Topf = \"𝕋\";\nvar topf = \"𝕥\";\nvar topfork = \"⫚\";\nvar tosa = \"⤩\";\nvar tprime = \"‴\";\nvar trade = \"™\";\nvar TRADE = \"™\";\nvar triangle = \"▵\";\nvar triangledown = \"▿\";\nvar triangleleft = \"◃\";\nvar trianglelefteq = \"⊴\";\nvar triangleq = \"≜\";\nvar triangleright = \"▹\";\nvar trianglerighteq = \"⊵\";\nvar tridot = \"◬\";\nvar trie = \"≜\";\nvar triminus = \"⨺\";\nvar TripleDot = \"⃛\";\nvar triplus = \"⨹\";\nvar trisb = \"⧍\";\nvar tritime = \"⨻\";\nvar trpezium = \"⏢\";\nvar Tscr = \"𝒯\";\nvar tscr = \"𝓉\";\nvar TScy = \"Ц\";\nvar tscy = \"ц\";\nvar TSHcy = \"Ћ\";\nvar tshcy = \"ћ\";\nvar Tstrok = \"Ŧ\";\nvar tstrok = \"ŧ\";\nvar twixt = \"≬\";\nvar twoheadleftarrow = \"↞\";\nvar twoheadrightarrow = \"↠\";\nvar Uacute$1 = \"Ú\";\nvar uacute$1 = \"ú\";\nvar uarr = \"↑\";\nvar Uarr = \"↟\";\nvar uArr = \"⇑\";\nvar Uarrocir = \"⥉\";\nvar Ubrcy = \"Ў\";\nvar ubrcy = \"ў\";\nvar Ubreve = \"Ŭ\";\nvar ubreve = \"ŭ\";\nvar Ucirc$1 = \"Û\";\nvar ucirc$1 = \"û\";\nvar Ucy = \"У\";\nvar ucy = \"у\";\nvar udarr = \"⇅\";\nvar Udblac = \"Ű\";\nvar udblac = \"ű\";\nvar udhar = \"⥮\";\nvar ufisht = \"⥾\";\nvar Ufr = \"𝔘\";\nvar ufr = \"𝔲\";\nvar Ugrave$1 = \"Ù\";\nvar ugrave$1 = \"ù\";\nvar uHar = \"⥣\";\nvar uharl = \"↿\";\nvar uharr = \"↾\";\nvar uhblk = \"▀\";\nvar ulcorn = \"⌜\";\nvar ulcorner = \"⌜\";\nvar ulcrop = \"⌏\";\nvar ultri = \"◸\";\nvar Umacr = \"Ū\";\nvar umacr = \"ū\";\nvar uml$1 = \"¨\";\nvar UnderBar = \"_\";\nvar UnderBrace = \"⏟\";\nvar UnderBracket = \"⎵\";\nvar UnderParenthesis = \"⏝\";\nvar Union = \"⋃\";\nvar UnionPlus = \"⊎\";\nvar Uogon = \"Ų\";\nvar uogon = \"ų\";\nvar Uopf = \"𝕌\";\nvar uopf = \"𝕦\";\nvar UpArrowBar = \"⤒\";\nvar uparrow = \"↑\";\nvar UpArrow = \"↑\";\nvar Uparrow = \"⇑\";\nvar UpArrowDownArrow = \"⇅\";\nvar updownarrow = \"↕\";\nvar UpDownArrow = \"↕\";\nvar Updownarrow = \"⇕\";\nvar UpEquilibrium = \"⥮\";\nvar upharpoonleft = \"↿\";\nvar upharpoonright = \"↾\";\nvar uplus = \"⊎\";\nvar UpperLeftArrow = \"↖\";\nvar UpperRightArrow = \"↗\";\nvar upsi = \"υ\";\nvar Upsi = \"ϒ\";\nvar upsih = \"ϒ\";\nvar Upsilon = \"Υ\";\nvar upsilon = \"υ\";\nvar UpTeeArrow = \"↥\";\nvar UpTee = \"⊥\";\nvar upuparrows = \"⇈\";\nvar urcorn = \"⌝\";\nvar urcorner = \"⌝\";\nvar urcrop = \"⌎\";\nvar Uring = \"Ů\";\nvar uring = \"ů\";\nvar urtri = \"◹\";\nvar Uscr = \"𝒰\";\nvar uscr = \"𝓊\";\nvar utdot = \"⋰\";\nvar Utilde = \"Ũ\";\nvar utilde = \"ũ\";\nvar utri = \"▵\";\nvar utrif = \"▴\";\nvar uuarr = \"⇈\";\nvar Uuml$1 = \"Ü\";\nvar uuml$1 = \"ü\";\nvar uwangle = \"⦧\";\nvar vangrt = \"⦜\";\nvar varepsilon = \"ϵ\";\nvar varkappa = \"ϰ\";\nvar varnothing = \"∅\";\nvar varphi = \"ϕ\";\nvar varpi = \"ϖ\";\nvar varpropto = \"∝\";\nvar varr = \"↕\";\nvar vArr = \"⇕\";\nvar varrho = \"ϱ\";\nvar varsigma = \"ς\";\nvar varsubsetneq = \"⊊︀\";\nvar varsubsetneqq = \"⫋︀\";\nvar varsupsetneq = \"⊋︀\";\nvar varsupsetneqq = \"⫌︀\";\nvar vartheta = \"ϑ\";\nvar vartriangleleft = \"⊲\";\nvar vartriangleright = \"⊳\";\nvar vBar = \"⫨\";\nvar Vbar = \"⫫\";\nvar vBarv = \"⫩\";\nvar Vcy = \"В\";\nvar vcy = \"в\";\nvar vdash = \"⊢\";\nvar vDash = \"⊨\";\nvar Vdash = \"⊩\";\nvar VDash = \"⊫\";\nvar Vdashl = \"⫦\";\nvar veebar = \"⊻\";\nvar vee = \"∨\";\nvar Vee = \"⋁\";\nvar veeeq = \"≚\";\nvar vellip = \"⋮\";\nvar verbar = \"|\";\nvar Verbar = \"‖\";\nvar vert = \"|\";\nvar Vert = \"‖\";\nvar VerticalBar = \"∣\";\nvar VerticalLine = \"|\";\nvar VerticalSeparator = \"❘\";\nvar VerticalTilde = \"≀\";\nvar VeryThinSpace = \" \";\nvar Vfr = \"𝔙\";\nvar vfr = \"𝔳\";\nvar vltri = \"⊲\";\nvar vnsub = \"⊂⃒\";\nvar vnsup = \"⊃⃒\";\nvar Vopf = \"𝕍\";\nvar vopf = \"𝕧\";\nvar vprop = \"∝\";\nvar vrtri = \"⊳\";\nvar Vscr = \"𝒱\";\nvar vscr = \"𝓋\";\nvar vsubnE = \"⫋︀\";\nvar vsubne = \"⊊︀\";\nvar vsupnE = \"⫌︀\";\nvar vsupne = \"⊋︀\";\nvar Vvdash = \"⊪\";\nvar vzigzag = \"⦚\";\nvar Wcirc = \"Ŵ\";\nvar wcirc = \"ŵ\";\nvar wedbar = \"⩟\";\nvar wedge = \"∧\";\nvar Wedge = \"⋀\";\nvar wedgeq = \"≙\";\nvar weierp = \"℘\";\nvar Wfr = \"𝔚\";\nvar wfr = \"𝔴\";\nvar Wopf = \"𝕎\";\nvar wopf = \"𝕨\";\nvar wp = \"℘\";\nvar wr = \"≀\";\nvar wreath = \"≀\";\nvar Wscr = \"𝒲\";\nvar wscr = \"𝓌\";\nvar xcap = \"⋂\";\nvar xcirc = \"◯\";\nvar xcup = \"⋃\";\nvar xdtri = \"▽\";\nvar Xfr = \"𝔛\";\nvar xfr = \"𝔵\";\nvar xharr = \"⟷\";\nvar xhArr = \"⟺\";\nvar Xi = \"Ξ\";\nvar xi = \"ξ\";\nvar xlarr = \"⟵\";\nvar xlArr = \"⟸\";\nvar xmap = \"⟼\";\nvar xnis = \"⋻\";\nvar xodot = \"⨀\";\nvar Xopf = \"𝕏\";\nvar xopf = \"𝕩\";\nvar xoplus = \"⨁\";\nvar xotime = \"⨂\";\nvar xrarr = \"⟶\";\nvar xrArr = \"⟹\";\nvar Xscr = \"𝒳\";\nvar xscr = \"𝓍\";\nvar xsqcup = \"⨆\";\nvar xuplus = \"⨄\";\nvar xutri = \"△\";\nvar xvee = \"⋁\";\nvar xwedge = \"⋀\";\nvar Yacute$1 = \"Ý\";\nvar yacute$1 = \"ý\";\nvar YAcy = \"Я\";\nvar yacy = \"я\";\nvar Ycirc = \"Ŷ\";\nvar ycirc = \"ŷ\";\nvar Ycy = \"Ы\";\nvar ycy = \"ы\";\nvar yen$1 = \"¥\";\nvar Yfr = \"𝔜\";\nvar yfr = \"𝔶\";\nvar YIcy = \"Ї\";\nvar yicy = \"ї\";\nvar Yopf = \"𝕐\";\nvar yopf = \"𝕪\";\nvar Yscr = \"𝒴\";\nvar yscr = \"𝓎\";\nvar YUcy = \"Ю\";\nvar yucy = \"ю\";\nvar yuml$1 = \"ÿ\";\nvar Yuml = \"Ÿ\";\nvar Zacute = \"Ź\";\nvar zacute = \"ź\";\nvar Zcaron = \"Ž\";\nvar zcaron = \"ž\";\nvar Zcy = \"З\";\nvar zcy = \"з\";\nvar Zdot = \"Ż\";\nvar zdot = \"ż\";\nvar zeetrf = \"ℨ\";\nvar ZeroWidthSpace = \"​\";\nvar Zeta = \"Ζ\";\nvar zeta = \"ζ\";\nvar zfr = \"𝔷\";\nvar Zfr = \"ℨ\";\nvar ZHcy = \"Ж\";\nvar zhcy = \"ж\";\nvar zigrarr = \"⇝\";\nvar zopf = \"𝕫\";\nvar Zopf = \"ℤ\";\nvar Zscr = \"𝒵\";\nvar zscr = \"𝓏\";\nvar zwj = \"‍\";\nvar zwnj = \"‌\";\nvar require$$1$1 = {\n\tAacute: Aacute$1,\n\taacute: aacute$1,\n\tAbreve: Abreve,\n\tabreve: abreve,\n\tac: ac,\n\tacd: acd,\n\tacE: acE,\n\tAcirc: Acirc$1,\n\tacirc: acirc$1,\n\tacute: acute$1,\n\tAcy: Acy,\n\tacy: acy,\n\tAElig: AElig$1,\n\taelig: aelig$1,\n\taf: af,\n\tAfr: Afr,\n\tafr: afr,\n\tAgrave: Agrave$1,\n\tagrave: agrave$1,\n\talefsym: alefsym,\n\taleph: aleph,\n\tAlpha: Alpha,\n\talpha: alpha,\n\tAmacr: Amacr,\n\tamacr: amacr,\n\tamalg: amalg,\n\tamp: amp$2,\n\tAMP: AMP$1,\n\tandand: andand,\n\tAnd: And,\n\tand: and,\n\tandd: andd,\n\tandslope: andslope,\n\tandv: andv,\n\tang: ang,\n\tange: ange,\n\tangle: angle,\n\tangmsdaa: angmsdaa,\n\tangmsdab: angmsdab,\n\tangmsdac: angmsdac,\n\tangmsdad: angmsdad,\n\tangmsdae: angmsdae,\n\tangmsdaf: angmsdaf,\n\tangmsdag: angmsdag,\n\tangmsdah: angmsdah,\n\tangmsd: angmsd,\n\tangrt: angrt,\n\tangrtvb: angrtvb,\n\tangrtvbd: angrtvbd,\n\tangsph: angsph,\n\tangst: angst,\n\tangzarr: angzarr,\n\tAogon: Aogon,\n\taogon: aogon,\n\tAopf: Aopf,\n\taopf: aopf,\n\tapacir: apacir,\n\tap: ap,\n\tapE: apE,\n\tape: ape,\n\tapid: apid,\n\tapos: apos$1,\n\tApplyFunction: ApplyFunction,\n\tapprox: approx,\n\tapproxeq: approxeq,\n\tAring: Aring$1,\n\taring: aring$1,\n\tAscr: Ascr,\n\tascr: ascr,\n\tAssign: Assign,\n\tast: ast,\n\tasymp: asymp,\n\tasympeq: asympeq,\n\tAtilde: Atilde$1,\n\tatilde: atilde$1,\n\tAuml: Auml$1,\n\tauml: auml$1,\n\tawconint: awconint,\n\tawint: awint,\n\tbackcong: backcong,\n\tbackepsilon: backepsilon,\n\tbackprime: backprime,\n\tbacksim: backsim,\n\tbacksimeq: backsimeq,\n\tBackslash: Backslash,\n\tBarv: Barv,\n\tbarvee: barvee,\n\tbarwed: barwed,\n\tBarwed: Barwed,\n\tbarwedge: barwedge,\n\tbbrk: bbrk,\n\tbbrktbrk: bbrktbrk,\n\tbcong: bcong,\n\tBcy: Bcy,\n\tbcy: bcy,\n\tbdquo: bdquo,\n\tbecaus: becaus,\n\tbecause: because,\n\tBecause: Because,\n\tbemptyv: bemptyv,\n\tbepsi: bepsi,\n\tbernou: bernou,\n\tBernoullis: Bernoullis,\n\tBeta: Beta,\n\tbeta: beta,\n\tbeth: beth,\n\tbetween: between,\n\tBfr: Bfr,\n\tbfr: bfr,\n\tbigcap: bigcap,\n\tbigcirc: bigcirc,\n\tbigcup: bigcup,\n\tbigodot: bigodot,\n\tbigoplus: bigoplus,\n\tbigotimes: bigotimes,\n\tbigsqcup: bigsqcup,\n\tbigstar: bigstar,\n\tbigtriangledown: bigtriangledown,\n\tbigtriangleup: bigtriangleup,\n\tbiguplus: biguplus,\n\tbigvee: bigvee,\n\tbigwedge: bigwedge,\n\tbkarow: bkarow,\n\tblacklozenge: blacklozenge,\n\tblacksquare: blacksquare,\n\tblacktriangle: blacktriangle,\n\tblacktriangledown: blacktriangledown,\n\tblacktriangleleft: blacktriangleleft,\n\tblacktriangleright: blacktriangleright,\n\tblank: blank,\n\tblk12: blk12,\n\tblk14: blk14,\n\tblk34: blk34,\n\tblock: block,\n\tbne: bne,\n\tbnequiv: bnequiv,\n\tbNot: bNot,\n\tbnot: bnot,\n\tBopf: Bopf,\n\tbopf: bopf,\n\tbot: bot,\n\tbottom: bottom,\n\tbowtie: bowtie,\n\tboxbox: boxbox,\n\tboxdl: boxdl,\n\tboxdL: boxdL,\n\tboxDl: boxDl,\n\tboxDL: boxDL,\n\tboxdr: boxdr,\n\tboxdR: boxdR,\n\tboxDr: boxDr,\n\tboxDR: boxDR,\n\tboxh: boxh,\n\tboxH: boxH,\n\tboxhd: boxhd,\n\tboxHd: boxHd,\n\tboxhD: boxhD,\n\tboxHD: boxHD,\n\tboxhu: boxhu,\n\tboxHu: boxHu,\n\tboxhU: boxhU,\n\tboxHU: boxHU,\n\tboxminus: boxminus,\n\tboxplus: boxplus,\n\tboxtimes: boxtimes,\n\tboxul: boxul,\n\tboxuL: boxuL,\n\tboxUl: boxUl,\n\tboxUL: boxUL,\n\tboxur: boxur,\n\tboxuR: boxuR,\n\tboxUr: boxUr,\n\tboxUR: boxUR,\n\tboxv: boxv,\n\tboxV: boxV,\n\tboxvh: boxvh,\n\tboxvH: boxvH,\n\tboxVh: boxVh,\n\tboxVH: boxVH,\n\tboxvl: boxvl,\n\tboxvL: boxvL,\n\tboxVl: boxVl,\n\tboxVL: boxVL,\n\tboxvr: boxvr,\n\tboxvR: boxvR,\n\tboxVr: boxVr,\n\tboxVR: boxVR,\n\tbprime: bprime,\n\tbreve: breve,\n\tBreve: Breve,\n\tbrvbar: brvbar$1,\n\tbscr: bscr,\n\tBscr: Bscr,\n\tbsemi: bsemi,\n\tbsim: bsim,\n\tbsime: bsime,\n\tbsolb: bsolb,\n\tbsol: bsol,\n\tbsolhsub: bsolhsub,\n\tbull: bull,\n\tbullet: bullet,\n\tbump: bump,\n\tbumpE: bumpE,\n\tbumpe: bumpe,\n\tBumpeq: Bumpeq,\n\tbumpeq: bumpeq,\n\tCacute: Cacute,\n\tcacute: cacute,\n\tcapand: capand,\n\tcapbrcup: capbrcup,\n\tcapcap: capcap,\n\tcap: cap,\n\tCap: Cap,\n\tcapcup: capcup,\n\tcapdot: capdot,\n\tCapitalDifferentialD: CapitalDifferentialD,\n\tcaps: caps,\n\tcaret: caret,\n\tcaron: caron,\n\tCayleys: Cayleys,\n\tccaps: ccaps,\n\tCcaron: Ccaron,\n\tccaron: ccaron,\n\tCcedil: Ccedil$1,\n\tccedil: ccedil$1,\n\tCcirc: Ccirc,\n\tccirc: ccirc,\n\tCconint: Cconint,\n\tccups: ccups,\n\tccupssm: ccupssm,\n\tCdot: Cdot,\n\tcdot: cdot,\n\tcedil: cedil$1,\n\tCedilla: Cedilla,\n\tcemptyv: cemptyv,\n\tcent: cent$1,\n\tcenterdot: centerdot,\n\tCenterDot: CenterDot,\n\tcfr: cfr,\n\tCfr: Cfr,\n\tCHcy: CHcy,\n\tchcy: chcy,\n\tcheck: check,\n\tcheckmark: checkmark,\n\tChi: Chi,\n\tchi: chi,\n\tcirc: circ,\n\tcirceq: circeq,\n\tcirclearrowleft: circlearrowleft,\n\tcirclearrowright: circlearrowright,\n\tcircledast: circledast,\n\tcircledcirc: circledcirc,\n\tcircleddash: circleddash,\n\tCircleDot: CircleDot,\n\tcircledR: circledR,\n\tcircledS: circledS,\n\tCircleMinus: CircleMinus,\n\tCirclePlus: CirclePlus,\n\tCircleTimes: CircleTimes,\n\tcir: cir,\n\tcirE: cirE,\n\tcire: cire,\n\tcirfnint: cirfnint,\n\tcirmid: cirmid,\n\tcirscir: cirscir,\n\tClockwiseContourIntegral: ClockwiseContourIntegral,\n\tCloseCurlyDoubleQuote: CloseCurlyDoubleQuote,\n\tCloseCurlyQuote: CloseCurlyQuote,\n\tclubs: clubs,\n\tclubsuit: clubsuit,\n\tcolon: colon,\n\tColon: Colon,\n\tColone: Colone,\n\tcolone: colone,\n\tcoloneq: coloneq,\n\tcomma: comma,\n\tcommat: commat,\n\tcomp: comp,\n\tcompfn: compfn,\n\tcomplement: complement,\n\tcomplexes: complexes,\n\tcong: cong,\n\tcongdot: congdot,\n\tCongruent: Congruent,\n\tconint: conint,\n\tConint: Conint,\n\tContourIntegral: ContourIntegral,\n\tcopf: copf,\n\tCopf: Copf,\n\tcoprod: coprod,\n\tCoproduct: Coproduct,\n\tcopy: copy$1,\n\tCOPY: COPY$1,\n\tcopysr: copysr,\n\tCounterClockwiseContourIntegral: CounterClockwiseContourIntegral,\n\tcrarr: crarr,\n\tcross: cross,\n\tCross: Cross,\n\tCscr: Cscr,\n\tcscr: cscr,\n\tcsub: csub,\n\tcsube: csube,\n\tcsup: csup,\n\tcsupe: csupe,\n\tctdot: ctdot,\n\tcudarrl: cudarrl,\n\tcudarrr: cudarrr,\n\tcuepr: cuepr,\n\tcuesc: cuesc,\n\tcularr: cularr,\n\tcularrp: cularrp,\n\tcupbrcap: cupbrcap,\n\tcupcap: cupcap,\n\tCupCap: CupCap,\n\tcup: cup,\n\tCup: Cup,\n\tcupcup: cupcup,\n\tcupdot: cupdot,\n\tcupor: cupor,\n\tcups: cups,\n\tcurarr: curarr,\n\tcurarrm: curarrm,\n\tcurlyeqprec: curlyeqprec,\n\tcurlyeqsucc: curlyeqsucc,\n\tcurlyvee: curlyvee,\n\tcurlywedge: curlywedge,\n\tcurren: curren$1,\n\tcurvearrowleft: curvearrowleft,\n\tcurvearrowright: curvearrowright,\n\tcuvee: cuvee,\n\tcuwed: cuwed,\n\tcwconint: cwconint,\n\tcwint: cwint,\n\tcylcty: cylcty,\n\tdagger: dagger,\n\tDagger: Dagger,\n\tdaleth: daleth,\n\tdarr: darr,\n\tDarr: Darr,\n\tdArr: dArr,\n\tdash: dash,\n\tDashv: Dashv,\n\tdashv: dashv,\n\tdbkarow: dbkarow,\n\tdblac: dblac,\n\tDcaron: Dcaron,\n\tdcaron: dcaron,\n\tDcy: Dcy,\n\tdcy: dcy,\n\tddagger: ddagger,\n\tddarr: ddarr,\n\tDD: DD,\n\tdd: dd,\n\tDDotrahd: DDotrahd,\n\tddotseq: ddotseq,\n\tdeg: deg$1,\n\tDel: Del,\n\tDelta: Delta,\n\tdelta: delta,\n\tdemptyv: demptyv,\n\tdfisht: dfisht,\n\tDfr: Dfr,\n\tdfr: dfr,\n\tdHar: dHar,\n\tdharl: dharl,\n\tdharr: dharr,\n\tDiacriticalAcute: DiacriticalAcute,\n\tDiacriticalDot: DiacriticalDot,\n\tDiacriticalDoubleAcute: DiacriticalDoubleAcute,\n\tDiacriticalGrave: DiacriticalGrave,\n\tDiacriticalTilde: DiacriticalTilde,\n\tdiam: diam,\n\tdiamond: diamond,\n\tDiamond: Diamond,\n\tdiamondsuit: diamondsuit,\n\tdiams: diams,\n\tdie: die,\n\tDifferentialD: DifferentialD,\n\tdigamma: digamma,\n\tdisin: disin,\n\tdiv: div,\n\tdivide: divide$1,\n\tdivideontimes: divideontimes,\n\tdivonx: divonx,\n\tDJcy: DJcy,\n\tdjcy: djcy,\n\tdlcorn: dlcorn,\n\tdlcrop: dlcrop,\n\tdollar: dollar,\n\tDopf: Dopf,\n\tdopf: dopf,\n\tDot: Dot,\n\tdot: dot,\n\tDotDot: DotDot,\n\tdoteq: doteq,\n\tdoteqdot: doteqdot,\n\tDotEqual: DotEqual,\n\tdotminus: dotminus,\n\tdotplus: dotplus,\n\tdotsquare: dotsquare,\n\tdoublebarwedge: doublebarwedge,\n\tDoubleContourIntegral: DoubleContourIntegral,\n\tDoubleDot: DoubleDot,\n\tDoubleDownArrow: DoubleDownArrow,\n\tDoubleLeftArrow: DoubleLeftArrow,\n\tDoubleLeftRightArrow: DoubleLeftRightArrow,\n\tDoubleLeftTee: DoubleLeftTee,\n\tDoubleLongLeftArrow: DoubleLongLeftArrow,\n\tDoubleLongLeftRightArrow: DoubleLongLeftRightArrow,\n\tDoubleLongRightArrow: DoubleLongRightArrow,\n\tDoubleRightArrow: DoubleRightArrow,\n\tDoubleRightTee: DoubleRightTee,\n\tDoubleUpArrow: DoubleUpArrow,\n\tDoubleUpDownArrow: DoubleUpDownArrow,\n\tDoubleVerticalBar: DoubleVerticalBar,\n\tDownArrowBar: DownArrowBar,\n\tdownarrow: downarrow,\n\tDownArrow: DownArrow,\n\tDownarrow: Downarrow,\n\tDownArrowUpArrow: DownArrowUpArrow,\n\tDownBreve: DownBreve,\n\tdowndownarrows: downdownarrows,\n\tdownharpoonleft: downharpoonleft,\n\tdownharpoonright: downharpoonright,\n\tDownLeftRightVector: DownLeftRightVector,\n\tDownLeftTeeVector: DownLeftTeeVector,\n\tDownLeftVectorBar: DownLeftVectorBar,\n\tDownLeftVector: DownLeftVector,\n\tDownRightTeeVector: DownRightTeeVector,\n\tDownRightVectorBar: DownRightVectorBar,\n\tDownRightVector: DownRightVector,\n\tDownTeeArrow: DownTeeArrow,\n\tDownTee: DownTee,\n\tdrbkarow: drbkarow,\n\tdrcorn: drcorn,\n\tdrcrop: drcrop,\n\tDscr: Dscr,\n\tdscr: dscr,\n\tDScy: DScy,\n\tdscy: dscy,\n\tdsol: dsol,\n\tDstrok: Dstrok,\n\tdstrok: dstrok,\n\tdtdot: dtdot,\n\tdtri: dtri,\n\tdtrif: dtrif,\n\tduarr: duarr,\n\tduhar: duhar,\n\tdwangle: dwangle,\n\tDZcy: DZcy,\n\tdzcy: dzcy,\n\tdzigrarr: dzigrarr,\n\tEacute: Eacute$1,\n\teacute: eacute$1,\n\teaster: easter,\n\tEcaron: Ecaron,\n\tecaron: ecaron,\n\tEcirc: Ecirc$1,\n\tecirc: ecirc$1,\n\tecir: ecir,\n\tecolon: ecolon,\n\tEcy: Ecy,\n\tecy: ecy,\n\teDDot: eDDot,\n\tEdot: Edot,\n\tedot: edot,\n\teDot: eDot,\n\tee: ee,\n\tefDot: efDot,\n\tEfr: Efr,\n\tefr: efr,\n\teg: eg,\n\tEgrave: Egrave$1,\n\tegrave: egrave$1,\n\tegs: egs,\n\tegsdot: egsdot,\n\tel: el,\n\tElement: Element$1,\n\telinters: elinters,\n\tell: ell,\n\tels: els,\n\telsdot: elsdot,\n\tEmacr: Emacr,\n\temacr: emacr,\n\tempty: empty,\n\temptyset: emptyset,\n\tEmptySmallSquare: EmptySmallSquare,\n\temptyv: emptyv,\n\tEmptyVerySmallSquare: EmptyVerySmallSquare,\n\temsp13: emsp13,\n\temsp14: emsp14,\n\temsp: emsp,\n\tENG: ENG,\n\teng: eng,\n\tensp: ensp,\n\tEogon: Eogon,\n\teogon: eogon,\n\tEopf: Eopf,\n\teopf: eopf,\n\tepar: epar,\n\teparsl: eparsl,\n\teplus: eplus,\n\tepsi: epsi,\n\tEpsilon: Epsilon,\n\tepsilon: epsilon,\n\tepsiv: epsiv,\n\teqcirc: eqcirc,\n\teqcolon: eqcolon,\n\teqsim: eqsim,\n\teqslantgtr: eqslantgtr,\n\teqslantless: eqslantless,\n\tEqual: Equal,\n\tequals: equals,\n\tEqualTilde: EqualTilde,\n\tequest: equest,\n\tEquilibrium: Equilibrium,\n\tequiv: equiv,\n\tequivDD: equivDD,\n\teqvparsl: eqvparsl,\n\terarr: erarr,\n\terDot: erDot,\n\tescr: escr,\n\tEscr: Escr,\n\tesdot: esdot,\n\tEsim: Esim,\n\tesim: esim,\n\tEta: Eta,\n\teta: eta,\n\tETH: ETH$1,\n\teth: eth$1,\n\tEuml: Euml$1,\n\teuml: euml$1,\n\teuro: euro,\n\texcl: excl,\n\texist: exist,\n\tExists: Exists,\n\texpectation: expectation,\n\texponentiale: exponentiale,\n\tExponentialE: ExponentialE,\n\tfallingdotseq: fallingdotseq,\n\tFcy: Fcy,\n\tfcy: fcy,\n\tfemale: female,\n\tffilig: ffilig,\n\tfflig: fflig,\n\tffllig: ffllig,\n\tFfr: Ffr,\n\tffr: ffr,\n\tfilig: filig,\n\tFilledSmallSquare: FilledSmallSquare,\n\tFilledVerySmallSquare: FilledVerySmallSquare,\n\tfjlig: fjlig,\n\tflat: flat,\n\tfllig: fllig,\n\tfltns: fltns,\n\tfnof: fnof,\n\tFopf: Fopf,\n\tfopf: fopf,\n\tforall: forall,\n\tForAll: ForAll,\n\tfork: fork,\n\tforkv: forkv,\n\tFouriertrf: Fouriertrf,\n\tfpartint: fpartint,\n\tfrac12: frac12$1,\n\tfrac13: frac13,\n\tfrac14: frac14$1,\n\tfrac15: frac15,\n\tfrac16: frac16,\n\tfrac18: frac18,\n\tfrac23: frac23,\n\tfrac25: frac25,\n\tfrac34: frac34$1,\n\tfrac35: frac35,\n\tfrac38: frac38,\n\tfrac45: frac45,\n\tfrac56: frac56,\n\tfrac58: frac58,\n\tfrac78: frac78,\n\tfrasl: frasl,\n\tfrown: frown,\n\tfscr: fscr,\n\tFscr: Fscr,\n\tgacute: gacute,\n\tGamma: Gamma,\n\tgamma: gamma,\n\tGammad: Gammad,\n\tgammad: gammad,\n\tgap: gap,\n\tGbreve: Gbreve,\n\tgbreve: gbreve,\n\tGcedil: Gcedil,\n\tGcirc: Gcirc,\n\tgcirc: gcirc,\n\tGcy: Gcy,\n\tgcy: gcy,\n\tGdot: Gdot,\n\tgdot: gdot,\n\tge: ge,\n\tgE: gE,\n\tgEl: gEl,\n\tgel: gel,\n\tgeq: geq,\n\tgeqq: geqq,\n\tgeqslant: geqslant,\n\tgescc: gescc,\n\tges: ges,\n\tgesdot: gesdot,\n\tgesdoto: gesdoto,\n\tgesdotol: gesdotol,\n\tgesl: gesl,\n\tgesles: gesles,\n\tGfr: Gfr,\n\tgfr: gfr,\n\tgg: gg,\n\tGg: Gg,\n\tggg: ggg,\n\tgimel: gimel,\n\tGJcy: GJcy,\n\tgjcy: gjcy,\n\tgla: gla,\n\tgl: gl,\n\tglE: glE,\n\tglj: glj,\n\tgnap: gnap,\n\tgnapprox: gnapprox,\n\tgne: gne,\n\tgnE: gnE,\n\tgneq: gneq,\n\tgneqq: gneqq,\n\tgnsim: gnsim,\n\tGopf: Gopf,\n\tgopf: gopf,\n\tgrave: grave,\n\tGreaterEqual: GreaterEqual,\n\tGreaterEqualLess: GreaterEqualLess,\n\tGreaterFullEqual: GreaterFullEqual,\n\tGreaterGreater: GreaterGreater,\n\tGreaterLess: GreaterLess,\n\tGreaterSlantEqual: GreaterSlantEqual,\n\tGreaterTilde: GreaterTilde,\n\tGscr: Gscr,\n\tgscr: gscr,\n\tgsim: gsim,\n\tgsime: gsime,\n\tgsiml: gsiml,\n\tgtcc: gtcc,\n\tgtcir: gtcir,\n\tgt: gt$2,\n\tGT: GT$1,\n\tGt: Gt,\n\tgtdot: gtdot,\n\tgtlPar: gtlPar,\n\tgtquest: gtquest,\n\tgtrapprox: gtrapprox,\n\tgtrarr: gtrarr,\n\tgtrdot: gtrdot,\n\tgtreqless: gtreqless,\n\tgtreqqless: gtreqqless,\n\tgtrless: gtrless,\n\tgtrsim: gtrsim,\n\tgvertneqq: gvertneqq,\n\tgvnE: gvnE,\n\tHacek: Hacek,\n\thairsp: hairsp,\n\thalf: half,\n\thamilt: hamilt,\n\tHARDcy: HARDcy,\n\thardcy: hardcy,\n\tharrcir: harrcir,\n\tharr: harr,\n\thArr: hArr,\n\tharrw: harrw,\n\tHat: Hat,\n\thbar: hbar,\n\tHcirc: Hcirc,\n\thcirc: hcirc,\n\thearts: hearts,\n\theartsuit: heartsuit,\n\thellip: hellip,\n\thercon: hercon,\n\thfr: hfr,\n\tHfr: Hfr,\n\tHilbertSpace: HilbertSpace,\n\thksearow: hksearow,\n\thkswarow: hkswarow,\n\thoarr: hoarr,\n\thomtht: homtht,\n\thookleftarrow: hookleftarrow,\n\thookrightarrow: hookrightarrow,\n\thopf: hopf,\n\tHopf: Hopf,\n\thorbar: horbar,\n\tHorizontalLine: HorizontalLine,\n\thscr: hscr,\n\tHscr: Hscr,\n\thslash: hslash,\n\tHstrok: Hstrok,\n\thstrok: hstrok,\n\tHumpDownHump: HumpDownHump,\n\tHumpEqual: HumpEqual,\n\thybull: hybull,\n\thyphen: hyphen,\n\tIacute: Iacute$1,\n\tiacute: iacute$1,\n\tic: ic,\n\tIcirc: Icirc$1,\n\ticirc: icirc$1,\n\tIcy: Icy,\n\ticy: icy,\n\tIdot: Idot,\n\tIEcy: IEcy,\n\tiecy: iecy,\n\tiexcl: iexcl$1,\n\tiff: iff,\n\tifr: ifr,\n\tIfr: Ifr,\n\tIgrave: Igrave$1,\n\tigrave: igrave$1,\n\tii: ii,\n\tiiiint: iiiint,\n\tiiint: iiint,\n\tiinfin: iinfin,\n\tiiota: iiota,\n\tIJlig: IJlig,\n\tijlig: ijlig,\n\tImacr: Imacr,\n\timacr: imacr,\n\timage: image,\n\tImaginaryI: ImaginaryI,\n\timagline: imagline,\n\timagpart: imagpart,\n\timath: imath,\n\tIm: Im,\n\timof: imof,\n\timped: imped,\n\tImplies: Implies,\n\tincare: incare,\n\t\"in\": \"∈\",\n\tinfin: infin,\n\tinfintie: infintie,\n\tinodot: inodot,\n\tintcal: intcal,\n\tint: int,\n\tInt: Int,\n\tintegers: integers,\n\tIntegral: Integral,\n\tintercal: intercal,\n\tIntersection: Intersection,\n\tintlarhk: intlarhk,\n\tintprod: intprod,\n\tInvisibleComma: InvisibleComma,\n\tInvisibleTimes: InvisibleTimes,\n\tIOcy: IOcy,\n\tiocy: iocy,\n\tIogon: Iogon,\n\tiogon: iogon,\n\tIopf: Iopf,\n\tiopf: iopf,\n\tIota: Iota,\n\tiota: iota,\n\tiprod: iprod,\n\tiquest: iquest$1,\n\tiscr: iscr,\n\tIscr: Iscr,\n\tisin: isin,\n\tisindot: isindot,\n\tisinE: isinE,\n\tisins: isins,\n\tisinsv: isinsv,\n\tisinv: isinv,\n\tit: it,\n\tItilde: Itilde,\n\titilde: itilde,\n\tIukcy: Iukcy,\n\tiukcy: iukcy,\n\tIuml: Iuml$1,\n\tiuml: iuml$1,\n\tJcirc: Jcirc,\n\tjcirc: jcirc,\n\tJcy: Jcy,\n\tjcy: jcy,\n\tJfr: Jfr,\n\tjfr: jfr,\n\tjmath: jmath,\n\tJopf: Jopf,\n\tjopf: jopf,\n\tJscr: Jscr,\n\tjscr: jscr,\n\tJsercy: Jsercy,\n\tjsercy: jsercy,\n\tJukcy: Jukcy,\n\tjukcy: jukcy,\n\tKappa: Kappa,\n\tkappa: kappa,\n\tkappav: kappav,\n\tKcedil: Kcedil,\n\tkcedil: kcedil,\n\tKcy: Kcy,\n\tkcy: kcy,\n\tKfr: Kfr,\n\tkfr: kfr,\n\tkgreen: kgreen,\n\tKHcy: KHcy,\n\tkhcy: khcy,\n\tKJcy: KJcy,\n\tkjcy: kjcy,\n\tKopf: Kopf,\n\tkopf: kopf,\n\tKscr: Kscr,\n\tkscr: kscr,\n\tlAarr: lAarr,\n\tLacute: Lacute,\n\tlacute: lacute,\n\tlaemptyv: laemptyv,\n\tlagran: lagran,\n\tLambda: Lambda,\n\tlambda: lambda,\n\tlang: lang,\n\tLang: Lang,\n\tlangd: langd,\n\tlangle: langle,\n\tlap: lap,\n\tLaplacetrf: Laplacetrf,\n\tlaquo: laquo$1,\n\tlarrb: larrb,\n\tlarrbfs: larrbfs,\n\tlarr: larr,\n\tLarr: Larr,\n\tlArr: lArr,\n\tlarrfs: larrfs,\n\tlarrhk: larrhk,\n\tlarrlp: larrlp,\n\tlarrpl: larrpl,\n\tlarrsim: larrsim,\n\tlarrtl: larrtl,\n\tlatail: latail,\n\tlAtail: lAtail,\n\tlat: lat,\n\tlate: late,\n\tlates: lates,\n\tlbarr: lbarr,\n\tlBarr: lBarr,\n\tlbbrk: lbbrk,\n\tlbrace: lbrace,\n\tlbrack: lbrack,\n\tlbrke: lbrke,\n\tlbrksld: lbrksld,\n\tlbrkslu: lbrkslu,\n\tLcaron: Lcaron,\n\tlcaron: lcaron,\n\tLcedil: Lcedil,\n\tlcedil: lcedil,\n\tlceil: lceil,\n\tlcub: lcub,\n\tLcy: Lcy,\n\tlcy: lcy,\n\tldca: ldca,\n\tldquo: ldquo,\n\tldquor: ldquor,\n\tldrdhar: ldrdhar,\n\tldrushar: ldrushar,\n\tldsh: ldsh,\n\tle: le,\n\tlE: lE,\n\tLeftAngleBracket: LeftAngleBracket,\n\tLeftArrowBar: LeftArrowBar,\n\tleftarrow: leftarrow,\n\tLeftArrow: LeftArrow,\n\tLeftarrow: Leftarrow,\n\tLeftArrowRightArrow: LeftArrowRightArrow,\n\tleftarrowtail: leftarrowtail,\n\tLeftCeiling: LeftCeiling,\n\tLeftDoubleBracket: LeftDoubleBracket,\n\tLeftDownTeeVector: LeftDownTeeVector,\n\tLeftDownVectorBar: LeftDownVectorBar,\n\tLeftDownVector: LeftDownVector,\n\tLeftFloor: LeftFloor,\n\tleftharpoondown: leftharpoondown,\n\tleftharpoonup: leftharpoonup,\n\tleftleftarrows: leftleftarrows,\n\tleftrightarrow: leftrightarrow,\n\tLeftRightArrow: LeftRightArrow,\n\tLeftrightarrow: Leftrightarrow,\n\tleftrightarrows: leftrightarrows,\n\tleftrightharpoons: leftrightharpoons,\n\tleftrightsquigarrow: leftrightsquigarrow,\n\tLeftRightVector: LeftRightVector,\n\tLeftTeeArrow: LeftTeeArrow,\n\tLeftTee: LeftTee,\n\tLeftTeeVector: LeftTeeVector,\n\tleftthreetimes: leftthreetimes,\n\tLeftTriangleBar: LeftTriangleBar,\n\tLeftTriangle: LeftTriangle,\n\tLeftTriangleEqual: LeftTriangleEqual,\n\tLeftUpDownVector: LeftUpDownVector,\n\tLeftUpTeeVector: LeftUpTeeVector,\n\tLeftUpVectorBar: LeftUpVectorBar,\n\tLeftUpVector: LeftUpVector,\n\tLeftVectorBar: LeftVectorBar,\n\tLeftVector: LeftVector,\n\tlEg: lEg,\n\tleg: leg,\n\tleq: leq,\n\tleqq: leqq,\n\tleqslant: leqslant,\n\tlescc: lescc,\n\tles: les,\n\tlesdot: lesdot,\n\tlesdoto: lesdoto,\n\tlesdotor: lesdotor,\n\tlesg: lesg,\n\tlesges: lesges,\n\tlessapprox: lessapprox,\n\tlessdot: lessdot,\n\tlesseqgtr: lesseqgtr,\n\tlesseqqgtr: lesseqqgtr,\n\tLessEqualGreater: LessEqualGreater,\n\tLessFullEqual: LessFullEqual,\n\tLessGreater: LessGreater,\n\tlessgtr: lessgtr,\n\tLessLess: LessLess,\n\tlesssim: lesssim,\n\tLessSlantEqual: LessSlantEqual,\n\tLessTilde: LessTilde,\n\tlfisht: lfisht,\n\tlfloor: lfloor,\n\tLfr: Lfr,\n\tlfr: lfr,\n\tlg: lg,\n\tlgE: lgE,\n\tlHar: lHar,\n\tlhard: lhard,\n\tlharu: lharu,\n\tlharul: lharul,\n\tlhblk: lhblk,\n\tLJcy: LJcy,\n\tljcy: ljcy,\n\tllarr: llarr,\n\tll: ll,\n\tLl: Ll,\n\tllcorner: llcorner,\n\tLleftarrow: Lleftarrow,\n\tllhard: llhard,\n\tlltri: lltri,\n\tLmidot: Lmidot,\n\tlmidot: lmidot,\n\tlmoustache: lmoustache,\n\tlmoust: lmoust,\n\tlnap: lnap,\n\tlnapprox: lnapprox,\n\tlne: lne,\n\tlnE: lnE,\n\tlneq: lneq,\n\tlneqq: lneqq,\n\tlnsim: lnsim,\n\tloang: loang,\n\tloarr: loarr,\n\tlobrk: lobrk,\n\tlongleftarrow: longleftarrow,\n\tLongLeftArrow: LongLeftArrow,\n\tLongleftarrow: Longleftarrow,\n\tlongleftrightarrow: longleftrightarrow,\n\tLongLeftRightArrow: LongLeftRightArrow,\n\tLongleftrightarrow: Longleftrightarrow,\n\tlongmapsto: longmapsto,\n\tlongrightarrow: longrightarrow,\n\tLongRightArrow: LongRightArrow,\n\tLongrightarrow: Longrightarrow,\n\tlooparrowleft: looparrowleft,\n\tlooparrowright: looparrowright,\n\tlopar: lopar,\n\tLopf: Lopf,\n\tlopf: lopf,\n\tloplus: loplus,\n\tlotimes: lotimes,\n\tlowast: lowast,\n\tlowbar: lowbar,\n\tLowerLeftArrow: LowerLeftArrow,\n\tLowerRightArrow: LowerRightArrow,\n\tloz: loz,\n\tlozenge: lozenge,\n\tlozf: lozf,\n\tlpar: lpar,\n\tlparlt: lparlt,\n\tlrarr: lrarr,\n\tlrcorner: lrcorner,\n\tlrhar: lrhar,\n\tlrhard: lrhard,\n\tlrm: lrm,\n\tlrtri: lrtri,\n\tlsaquo: lsaquo,\n\tlscr: lscr,\n\tLscr: Lscr,\n\tlsh: lsh,\n\tLsh: Lsh,\n\tlsim: lsim,\n\tlsime: lsime,\n\tlsimg: lsimg,\n\tlsqb: lsqb,\n\tlsquo: lsquo,\n\tlsquor: lsquor,\n\tLstrok: Lstrok,\n\tlstrok: lstrok,\n\tltcc: ltcc,\n\tltcir: ltcir,\n\tlt: lt$2,\n\tLT: LT$1,\n\tLt: Lt,\n\tltdot: ltdot,\n\tlthree: lthree,\n\tltimes: ltimes,\n\tltlarr: ltlarr,\n\tltquest: ltquest,\n\tltri: ltri,\n\tltrie: ltrie,\n\tltrif: ltrif,\n\tltrPar: ltrPar,\n\tlurdshar: lurdshar,\n\tluruhar: luruhar,\n\tlvertneqq: lvertneqq,\n\tlvnE: lvnE,\n\tmacr: macr$1,\n\tmale: male,\n\tmalt: malt,\n\tmaltese: maltese,\n\t\"Map\": \"⤅\",\n\tmap: map,\n\tmapsto: mapsto,\n\tmapstodown: mapstodown,\n\tmapstoleft: mapstoleft,\n\tmapstoup: mapstoup,\n\tmarker: marker,\n\tmcomma: mcomma,\n\tMcy: Mcy,\n\tmcy: mcy,\n\tmdash: mdash,\n\tmDDot: mDDot,\n\tmeasuredangle: measuredangle,\n\tMediumSpace: MediumSpace,\n\tMellintrf: Mellintrf,\n\tMfr: Mfr,\n\tmfr: mfr,\n\tmho: mho,\n\tmicro: micro$1,\n\tmidast: midast,\n\tmidcir: midcir,\n\tmid: mid,\n\tmiddot: middot$1,\n\tminusb: minusb,\n\tminus: minus,\n\tminusd: minusd,\n\tminusdu: minusdu,\n\tMinusPlus: MinusPlus,\n\tmlcp: mlcp,\n\tmldr: mldr,\n\tmnplus: mnplus,\n\tmodels: models,\n\tMopf: Mopf,\n\tmopf: mopf,\n\tmp: mp,\n\tmscr: mscr,\n\tMscr: Mscr,\n\tmstpos: mstpos,\n\tMu: Mu,\n\tmu: mu,\n\tmultimap: multimap,\n\tmumap: mumap,\n\tnabla: nabla,\n\tNacute: Nacute,\n\tnacute: nacute,\n\tnang: nang,\n\tnap: nap,\n\tnapE: napE,\n\tnapid: napid,\n\tnapos: napos,\n\tnapprox: napprox,\n\tnatural: natural,\n\tnaturals: naturals,\n\tnatur: natur,\n\tnbsp: nbsp$1,\n\tnbump: nbump,\n\tnbumpe: nbumpe,\n\tncap: ncap,\n\tNcaron: Ncaron,\n\tncaron: ncaron,\n\tNcedil: Ncedil,\n\tncedil: ncedil,\n\tncong: ncong,\n\tncongdot: ncongdot,\n\tncup: ncup,\n\tNcy: Ncy,\n\tncy: ncy,\n\tndash: ndash,\n\tnearhk: nearhk,\n\tnearr: nearr,\n\tneArr: neArr,\n\tnearrow: nearrow,\n\tne: ne,\n\tnedot: nedot,\n\tNegativeMediumSpace: NegativeMediumSpace,\n\tNegativeThickSpace: NegativeThickSpace,\n\tNegativeThinSpace: NegativeThinSpace,\n\tNegativeVeryThinSpace: NegativeVeryThinSpace,\n\tnequiv: nequiv,\n\tnesear: nesear,\n\tnesim: nesim,\n\tNestedGreaterGreater: NestedGreaterGreater,\n\tNestedLessLess: NestedLessLess,\n\tNewLine: NewLine,\n\tnexist: nexist,\n\tnexists: nexists,\n\tNfr: Nfr,\n\tnfr: nfr,\n\tngE: ngE,\n\tnge: nge,\n\tngeq: ngeq,\n\tngeqq: ngeqq,\n\tngeqslant: ngeqslant,\n\tnges: nges,\n\tnGg: nGg,\n\tngsim: ngsim,\n\tnGt: nGt,\n\tngt: ngt,\n\tngtr: ngtr,\n\tnGtv: nGtv,\n\tnharr: nharr,\n\tnhArr: nhArr,\n\tnhpar: nhpar,\n\tni: ni,\n\tnis: nis,\n\tnisd: nisd,\n\tniv: niv,\n\tNJcy: NJcy,\n\tnjcy: njcy,\n\tnlarr: nlarr,\n\tnlArr: nlArr,\n\tnldr: nldr,\n\tnlE: nlE,\n\tnle: nle,\n\tnleftarrow: nleftarrow,\n\tnLeftarrow: nLeftarrow,\n\tnleftrightarrow: nleftrightarrow,\n\tnLeftrightarrow: nLeftrightarrow,\n\tnleq: nleq,\n\tnleqq: nleqq,\n\tnleqslant: nleqslant,\n\tnles: nles,\n\tnless: nless,\n\tnLl: nLl,\n\tnlsim: nlsim,\n\tnLt: nLt,\n\tnlt: nlt,\n\tnltri: nltri,\n\tnltrie: nltrie,\n\tnLtv: nLtv,\n\tnmid: nmid,\n\tNoBreak: NoBreak,\n\tNonBreakingSpace: NonBreakingSpace,\n\tnopf: nopf,\n\tNopf: Nopf,\n\tNot: Not,\n\tnot: not$1,\n\tNotCongruent: NotCongruent,\n\tNotCupCap: NotCupCap,\n\tNotDoubleVerticalBar: NotDoubleVerticalBar,\n\tNotElement: NotElement,\n\tNotEqual: NotEqual,\n\tNotEqualTilde: NotEqualTilde,\n\tNotExists: NotExists,\n\tNotGreater: NotGreater,\n\tNotGreaterEqual: NotGreaterEqual,\n\tNotGreaterFullEqual: NotGreaterFullEqual,\n\tNotGreaterGreater: NotGreaterGreater,\n\tNotGreaterLess: NotGreaterLess,\n\tNotGreaterSlantEqual: NotGreaterSlantEqual,\n\tNotGreaterTilde: NotGreaterTilde,\n\tNotHumpDownHump: NotHumpDownHump,\n\tNotHumpEqual: NotHumpEqual,\n\tnotin: notin,\n\tnotindot: notindot,\n\tnotinE: notinE,\n\tnotinva: notinva,\n\tnotinvb: notinvb,\n\tnotinvc: notinvc,\n\tNotLeftTriangleBar: NotLeftTriangleBar,\n\tNotLeftTriangle: NotLeftTriangle,\n\tNotLeftTriangleEqual: NotLeftTriangleEqual,\n\tNotLess: NotLess,\n\tNotLessEqual: NotLessEqual,\n\tNotLessGreater: NotLessGreater,\n\tNotLessLess: NotLessLess,\n\tNotLessSlantEqual: NotLessSlantEqual,\n\tNotLessTilde: NotLessTilde,\n\tNotNestedGreaterGreater: NotNestedGreaterGreater,\n\tNotNestedLessLess: NotNestedLessLess,\n\tnotni: notni,\n\tnotniva: notniva,\n\tnotnivb: notnivb,\n\tnotnivc: notnivc,\n\tNotPrecedes: NotPrecedes,\n\tNotPrecedesEqual: NotPrecedesEqual,\n\tNotPrecedesSlantEqual: NotPrecedesSlantEqual,\n\tNotReverseElement: NotReverseElement,\n\tNotRightTriangleBar: NotRightTriangleBar,\n\tNotRightTriangle: NotRightTriangle,\n\tNotRightTriangleEqual: NotRightTriangleEqual,\n\tNotSquareSubset: NotSquareSubset,\n\tNotSquareSubsetEqual: NotSquareSubsetEqual,\n\tNotSquareSuperset: NotSquareSuperset,\n\tNotSquareSupersetEqual: NotSquareSupersetEqual,\n\tNotSubset: NotSubset,\n\tNotSubsetEqual: NotSubsetEqual,\n\tNotSucceeds: NotSucceeds,\n\tNotSucceedsEqual: NotSucceedsEqual,\n\tNotSucceedsSlantEqual: NotSucceedsSlantEqual,\n\tNotSucceedsTilde: NotSucceedsTilde,\n\tNotSuperset: NotSuperset,\n\tNotSupersetEqual: NotSupersetEqual,\n\tNotTilde: NotTilde,\n\tNotTildeEqual: NotTildeEqual,\n\tNotTildeFullEqual: NotTildeFullEqual,\n\tNotTildeTilde: NotTildeTilde,\n\tNotVerticalBar: NotVerticalBar,\n\tnparallel: nparallel,\n\tnpar: npar,\n\tnparsl: nparsl,\n\tnpart: npart,\n\tnpolint: npolint,\n\tnpr: npr,\n\tnprcue: nprcue,\n\tnprec: nprec,\n\tnpreceq: npreceq,\n\tnpre: npre,\n\tnrarrc: nrarrc,\n\tnrarr: nrarr,\n\tnrArr: nrArr,\n\tnrarrw: nrarrw,\n\tnrightarrow: nrightarrow,\n\tnRightarrow: nRightarrow,\n\tnrtri: nrtri,\n\tnrtrie: nrtrie,\n\tnsc: nsc,\n\tnsccue: nsccue,\n\tnsce: nsce,\n\tNscr: Nscr,\n\tnscr: nscr,\n\tnshortmid: nshortmid,\n\tnshortparallel: nshortparallel,\n\tnsim: nsim,\n\tnsime: nsime,\n\tnsimeq: nsimeq,\n\tnsmid: nsmid,\n\tnspar: nspar,\n\tnsqsube: nsqsube,\n\tnsqsupe: nsqsupe,\n\tnsub: nsub,\n\tnsubE: nsubE,\n\tnsube: nsube,\n\tnsubset: nsubset,\n\tnsubseteq: nsubseteq,\n\tnsubseteqq: nsubseteqq,\n\tnsucc: nsucc,\n\tnsucceq: nsucceq,\n\tnsup: nsup,\n\tnsupE: nsupE,\n\tnsupe: nsupe,\n\tnsupset: nsupset,\n\tnsupseteq: nsupseteq,\n\tnsupseteqq: nsupseteqq,\n\tntgl: ntgl,\n\tNtilde: Ntilde$1,\n\tntilde: ntilde$1,\n\tntlg: ntlg,\n\tntriangleleft: ntriangleleft,\n\tntrianglelefteq: ntrianglelefteq,\n\tntriangleright: ntriangleright,\n\tntrianglerighteq: ntrianglerighteq,\n\tNu: Nu,\n\tnu: nu,\n\tnum: num,\n\tnumero: numero,\n\tnumsp: numsp,\n\tnvap: nvap,\n\tnvdash: nvdash,\n\tnvDash: nvDash,\n\tnVdash: nVdash,\n\tnVDash: nVDash,\n\tnvge: nvge,\n\tnvgt: nvgt,\n\tnvHarr: nvHarr,\n\tnvinfin: nvinfin,\n\tnvlArr: nvlArr,\n\tnvle: nvle,\n\tnvlt: nvlt,\n\tnvltrie: nvltrie,\n\tnvrArr: nvrArr,\n\tnvrtrie: nvrtrie,\n\tnvsim: nvsim,\n\tnwarhk: nwarhk,\n\tnwarr: nwarr,\n\tnwArr: nwArr,\n\tnwarrow: nwarrow,\n\tnwnear: nwnear,\n\tOacute: Oacute$1,\n\toacute: oacute$1,\n\toast: oast,\n\tOcirc: Ocirc$1,\n\tocirc: ocirc$1,\n\tocir: ocir,\n\tOcy: Ocy,\n\tocy: ocy,\n\todash: odash,\n\tOdblac: Odblac,\n\todblac: odblac,\n\todiv: odiv,\n\todot: odot,\n\todsold: odsold,\n\tOElig: OElig,\n\toelig: oelig,\n\tofcir: ofcir,\n\tOfr: Ofr,\n\tofr: ofr,\n\togon: ogon,\n\tOgrave: Ograve$1,\n\tograve: ograve$1,\n\togt: ogt,\n\tohbar: ohbar,\n\tohm: ohm,\n\toint: oint,\n\tolarr: olarr,\n\tolcir: olcir,\n\tolcross: olcross,\n\toline: oline,\n\tolt: olt,\n\tOmacr: Omacr,\n\tomacr: omacr,\n\tOmega: Omega,\n\tomega: omega,\n\tOmicron: Omicron,\n\tomicron: omicron,\n\tomid: omid,\n\tominus: ominus,\n\tOopf: Oopf,\n\toopf: oopf,\n\topar: opar,\n\tOpenCurlyDoubleQuote: OpenCurlyDoubleQuote,\n\tOpenCurlyQuote: OpenCurlyQuote,\n\toperp: operp,\n\toplus: oplus,\n\torarr: orarr,\n\tOr: Or,\n\tor: or,\n\tord: ord,\n\torder: order,\n\torderof: orderof,\n\tordf: ordf$1,\n\tordm: ordm$1,\n\torigof: origof,\n\toror: oror,\n\torslope: orslope,\n\torv: orv,\n\toS: oS,\n\tOscr: Oscr,\n\toscr: oscr,\n\tOslash: Oslash$1,\n\toslash: oslash$1,\n\tosol: osol,\n\tOtilde: Otilde$1,\n\totilde: otilde$1,\n\totimesas: otimesas,\n\tOtimes: Otimes,\n\totimes: otimes,\n\tOuml: Ouml$1,\n\touml: ouml$1,\n\tovbar: ovbar,\n\tOverBar: OverBar,\n\tOverBrace: OverBrace,\n\tOverBracket: OverBracket,\n\tOverParenthesis: OverParenthesis,\n\tpara: para$1,\n\tparallel: parallel,\n\tpar: par,\n\tparsim: parsim,\n\tparsl: parsl,\n\tpart: part,\n\tPartialD: PartialD,\n\tPcy: Pcy,\n\tpcy: pcy,\n\tpercnt: percnt,\n\tperiod: period,\n\tpermil: permil,\n\tperp: perp,\n\tpertenk: pertenk,\n\tPfr: Pfr,\n\tpfr: pfr,\n\tPhi: Phi,\n\tphi: phi,\n\tphiv: phiv,\n\tphmmat: phmmat,\n\tphone: phone,\n\tPi: Pi,\n\tpi: pi,\n\tpitchfork: pitchfork,\n\tpiv: piv,\n\tplanck: planck,\n\tplanckh: planckh,\n\tplankv: plankv,\n\tplusacir: plusacir,\n\tplusb: plusb,\n\tpluscir: pluscir,\n\tplus: plus,\n\tplusdo: plusdo,\n\tplusdu: plusdu,\n\tpluse: pluse,\n\tPlusMinus: PlusMinus,\n\tplusmn: plusmn$1,\n\tplussim: plussim,\n\tplustwo: plustwo,\n\tpm: pm,\n\tPoincareplane: Poincareplane,\n\tpointint: pointint,\n\tpopf: popf,\n\tPopf: Popf,\n\tpound: pound$1,\n\tprap: prap,\n\tPr: Pr,\n\tpr: pr,\n\tprcue: prcue,\n\tprecapprox: precapprox,\n\tprec: prec,\n\tpreccurlyeq: preccurlyeq,\n\tPrecedes: Precedes,\n\tPrecedesEqual: PrecedesEqual,\n\tPrecedesSlantEqual: PrecedesSlantEqual,\n\tPrecedesTilde: PrecedesTilde,\n\tpreceq: preceq,\n\tprecnapprox: precnapprox,\n\tprecneqq: precneqq,\n\tprecnsim: precnsim,\n\tpre: pre,\n\tprE: prE,\n\tprecsim: precsim,\n\tprime: prime,\n\tPrime: Prime,\n\tprimes: primes,\n\tprnap: prnap,\n\tprnE: prnE,\n\tprnsim: prnsim,\n\tprod: prod,\n\tProduct: Product,\n\tprofalar: profalar,\n\tprofline: profline,\n\tprofsurf: profsurf,\n\tprop: prop,\n\tProportional: Proportional,\n\tProportion: Proportion,\n\tpropto: propto,\n\tprsim: prsim,\n\tprurel: prurel,\n\tPscr: Pscr,\n\tpscr: pscr,\n\tPsi: Psi,\n\tpsi: psi,\n\tpuncsp: puncsp,\n\tQfr: Qfr,\n\tqfr: qfr,\n\tqint: qint,\n\tqopf: qopf,\n\tQopf: Qopf,\n\tqprime: qprime,\n\tQscr: Qscr,\n\tqscr: qscr,\n\tquaternions: quaternions,\n\tquatint: quatint,\n\tquest: quest,\n\tquesteq: questeq,\n\tquot: quot$2,\n\tQUOT: QUOT$1,\n\trAarr: rAarr,\n\trace: race,\n\tRacute: Racute,\n\tracute: racute,\n\tradic: radic,\n\traemptyv: raemptyv,\n\trang: rang,\n\tRang: Rang,\n\trangd: rangd,\n\trange: range,\n\trangle: rangle,\n\traquo: raquo$1,\n\trarrap: rarrap,\n\trarrb: rarrb,\n\trarrbfs: rarrbfs,\n\trarrc: rarrc,\n\trarr: rarr,\n\tRarr: Rarr,\n\trArr: rArr,\n\trarrfs: rarrfs,\n\trarrhk: rarrhk,\n\trarrlp: rarrlp,\n\trarrpl: rarrpl,\n\trarrsim: rarrsim,\n\tRarrtl: Rarrtl,\n\trarrtl: rarrtl,\n\trarrw: rarrw,\n\tratail: ratail,\n\trAtail: rAtail,\n\tratio: ratio,\n\trationals: rationals,\n\trbarr: rbarr,\n\trBarr: rBarr,\n\tRBarr: RBarr,\n\trbbrk: rbbrk,\n\trbrace: rbrace,\n\trbrack: rbrack,\n\trbrke: rbrke,\n\trbrksld: rbrksld,\n\trbrkslu: rbrkslu,\n\tRcaron: Rcaron,\n\trcaron: rcaron,\n\tRcedil: Rcedil,\n\trcedil: rcedil,\n\trceil: rceil,\n\trcub: rcub,\n\tRcy: Rcy,\n\trcy: rcy,\n\trdca: rdca,\n\trdldhar: rdldhar,\n\trdquo: rdquo,\n\trdquor: rdquor,\n\trdsh: rdsh,\n\treal: real,\n\trealine: realine,\n\trealpart: realpart,\n\treals: reals,\n\tRe: Re,\n\trect: rect,\n\treg: reg$1,\n\tREG: REG$1,\n\tReverseElement: ReverseElement,\n\tReverseEquilibrium: ReverseEquilibrium,\n\tReverseUpEquilibrium: ReverseUpEquilibrium,\n\trfisht: rfisht,\n\trfloor: rfloor,\n\trfr: rfr,\n\tRfr: Rfr,\n\trHar: rHar,\n\trhard: rhard,\n\trharu: rharu,\n\trharul: rharul,\n\tRho: Rho,\n\trho: rho,\n\trhov: rhov,\n\tRightAngleBracket: RightAngleBracket,\n\tRightArrowBar: RightArrowBar,\n\trightarrow: rightarrow,\n\tRightArrow: RightArrow,\n\tRightarrow: Rightarrow,\n\tRightArrowLeftArrow: RightArrowLeftArrow,\n\trightarrowtail: rightarrowtail,\n\tRightCeiling: RightCeiling,\n\tRightDoubleBracket: RightDoubleBracket,\n\tRightDownTeeVector: RightDownTeeVector,\n\tRightDownVectorBar: RightDownVectorBar,\n\tRightDownVector: RightDownVector,\n\tRightFloor: RightFloor,\n\trightharpoondown: rightharpoondown,\n\trightharpoonup: rightharpoonup,\n\trightleftarrows: rightleftarrows,\n\trightleftharpoons: rightleftharpoons,\n\trightrightarrows: rightrightarrows,\n\trightsquigarrow: rightsquigarrow,\n\tRightTeeArrow: RightTeeArrow,\n\tRightTee: RightTee,\n\tRightTeeVector: RightTeeVector,\n\trightthreetimes: rightthreetimes,\n\tRightTriangleBar: RightTriangleBar,\n\tRightTriangle: RightTriangle,\n\tRightTriangleEqual: RightTriangleEqual,\n\tRightUpDownVector: RightUpDownVector,\n\tRightUpTeeVector: RightUpTeeVector,\n\tRightUpVectorBar: RightUpVectorBar,\n\tRightUpVector: RightUpVector,\n\tRightVectorBar: RightVectorBar,\n\tRightVector: RightVector,\n\tring: ring,\n\trisingdotseq: risingdotseq,\n\trlarr: rlarr,\n\trlhar: rlhar,\n\trlm: rlm,\n\trmoustache: rmoustache,\n\trmoust: rmoust,\n\trnmid: rnmid,\n\troang: roang,\n\troarr: roarr,\n\trobrk: robrk,\n\tropar: ropar,\n\tropf: ropf,\n\tRopf: Ropf,\n\troplus: roplus,\n\trotimes: rotimes,\n\tRoundImplies: RoundImplies,\n\trpar: rpar,\n\trpargt: rpargt,\n\trppolint: rppolint,\n\trrarr: rrarr,\n\tRrightarrow: Rrightarrow,\n\trsaquo: rsaquo,\n\trscr: rscr,\n\tRscr: Rscr,\n\trsh: rsh,\n\tRsh: Rsh,\n\trsqb: rsqb,\n\trsquo: rsquo,\n\trsquor: rsquor,\n\trthree: rthree,\n\trtimes: rtimes,\n\trtri: rtri,\n\trtrie: rtrie,\n\trtrif: rtrif,\n\trtriltri: rtriltri,\n\tRuleDelayed: RuleDelayed,\n\truluhar: ruluhar,\n\trx: rx,\n\tSacute: Sacute,\n\tsacute: sacute,\n\tsbquo: sbquo,\n\tscap: scap,\n\tScaron: Scaron,\n\tscaron: scaron,\n\tSc: Sc,\n\tsc: sc,\n\tsccue: sccue,\n\tsce: sce,\n\tscE: scE,\n\tScedil: Scedil,\n\tscedil: scedil,\n\tScirc: Scirc,\n\tscirc: scirc,\n\tscnap: scnap,\n\tscnE: scnE,\n\tscnsim: scnsim,\n\tscpolint: scpolint,\n\tscsim: scsim,\n\tScy: Scy,\n\tscy: scy,\n\tsdotb: sdotb,\n\tsdot: sdot,\n\tsdote: sdote,\n\tsearhk: searhk,\n\tsearr: searr,\n\tseArr: seArr,\n\tsearrow: searrow,\n\tsect: sect$1,\n\tsemi: semi,\n\tseswar: seswar,\n\tsetminus: setminus,\n\tsetmn: setmn,\n\tsext: sext,\n\tSfr: Sfr,\n\tsfr: sfr,\n\tsfrown: sfrown,\n\tsharp: sharp,\n\tSHCHcy: SHCHcy,\n\tshchcy: shchcy,\n\tSHcy: SHcy,\n\tshcy: shcy,\n\tShortDownArrow: ShortDownArrow,\n\tShortLeftArrow: ShortLeftArrow,\n\tshortmid: shortmid,\n\tshortparallel: shortparallel,\n\tShortRightArrow: ShortRightArrow,\n\tShortUpArrow: ShortUpArrow,\n\tshy: shy$1,\n\tSigma: Sigma,\n\tsigma: sigma,\n\tsigmaf: sigmaf,\n\tsigmav: sigmav,\n\tsim: sim,\n\tsimdot: simdot,\n\tsime: sime,\n\tsimeq: simeq,\n\tsimg: simg,\n\tsimgE: simgE,\n\tsiml: siml,\n\tsimlE: simlE,\n\tsimne: simne,\n\tsimplus: simplus,\n\tsimrarr: simrarr,\n\tslarr: slarr,\n\tSmallCircle: SmallCircle,\n\tsmallsetminus: smallsetminus,\n\tsmashp: smashp,\n\tsmeparsl: smeparsl,\n\tsmid: smid,\n\tsmile: smile,\n\tsmt: smt,\n\tsmte: smte,\n\tsmtes: smtes,\n\tSOFTcy: SOFTcy,\n\tsoftcy: softcy,\n\tsolbar: solbar,\n\tsolb: solb,\n\tsol: sol,\n\tSopf: Sopf,\n\tsopf: sopf,\n\tspades: spades,\n\tspadesuit: spadesuit,\n\tspar: spar,\n\tsqcap: sqcap,\n\tsqcaps: sqcaps,\n\tsqcup: sqcup,\n\tsqcups: sqcups,\n\tSqrt: Sqrt,\n\tsqsub: sqsub,\n\tsqsube: sqsube,\n\tsqsubset: sqsubset,\n\tsqsubseteq: sqsubseteq,\n\tsqsup: sqsup,\n\tsqsupe: sqsupe,\n\tsqsupset: sqsupset,\n\tsqsupseteq: sqsupseteq,\n\tsquare: square,\n\tSquare: Square,\n\tSquareIntersection: SquareIntersection,\n\tSquareSubset: SquareSubset,\n\tSquareSubsetEqual: SquareSubsetEqual,\n\tSquareSuperset: SquareSuperset,\n\tSquareSupersetEqual: SquareSupersetEqual,\n\tSquareUnion: SquareUnion,\n\tsquarf: squarf,\n\tsqu: squ,\n\tsquf: squf,\n\tsrarr: srarr,\n\tSscr: Sscr,\n\tsscr: sscr,\n\tssetmn: ssetmn,\n\tssmile: ssmile,\n\tsstarf: sstarf,\n\tStar: Star,\n\tstar: star,\n\tstarf: starf,\n\tstraightepsilon: straightepsilon,\n\tstraightphi: straightphi,\n\tstrns: strns,\n\tsub: sub,\n\tSub: Sub,\n\tsubdot: subdot,\n\tsubE: subE,\n\tsube: sube,\n\tsubedot: subedot,\n\tsubmult: submult,\n\tsubnE: subnE,\n\tsubne: subne,\n\tsubplus: subplus,\n\tsubrarr: subrarr,\n\tsubset: subset,\n\tSubset: Subset,\n\tsubseteq: subseteq,\n\tsubseteqq: subseteqq,\n\tSubsetEqual: SubsetEqual,\n\tsubsetneq: subsetneq,\n\tsubsetneqq: subsetneqq,\n\tsubsim: subsim,\n\tsubsub: subsub,\n\tsubsup: subsup,\n\tsuccapprox: succapprox,\n\tsucc: succ,\n\tsucccurlyeq: succcurlyeq,\n\tSucceeds: Succeeds,\n\tSucceedsEqual: SucceedsEqual,\n\tSucceedsSlantEqual: SucceedsSlantEqual,\n\tSucceedsTilde: SucceedsTilde,\n\tsucceq: succeq,\n\tsuccnapprox: succnapprox,\n\tsuccneqq: succneqq,\n\tsuccnsim: succnsim,\n\tsuccsim: succsim,\n\tSuchThat: SuchThat,\n\tsum: sum,\n\tSum: Sum,\n\tsung: sung,\n\tsup1: sup1$1,\n\tsup2: sup2$1,\n\tsup3: sup3$1,\n\tsup: sup,\n\tSup: Sup,\n\tsupdot: supdot,\n\tsupdsub: supdsub,\n\tsupE: supE,\n\tsupe: supe,\n\tsupedot: supedot,\n\tSuperset: Superset,\n\tSupersetEqual: SupersetEqual,\n\tsuphsol: suphsol,\n\tsuphsub: suphsub,\n\tsuplarr: suplarr,\n\tsupmult: supmult,\n\tsupnE: supnE,\n\tsupne: supne,\n\tsupplus: supplus,\n\tsupset: supset,\n\tSupset: Supset,\n\tsupseteq: supseteq,\n\tsupseteqq: supseteqq,\n\tsupsetneq: supsetneq,\n\tsupsetneqq: supsetneqq,\n\tsupsim: supsim,\n\tsupsub: supsub,\n\tsupsup: supsup,\n\tswarhk: swarhk,\n\tswarr: swarr,\n\tswArr: swArr,\n\tswarrow: swarrow,\n\tswnwar: swnwar,\n\tszlig: szlig$1,\n\tTab: Tab,\n\ttarget: target,\n\tTau: Tau,\n\ttau: tau,\n\ttbrk: tbrk,\n\tTcaron: Tcaron,\n\ttcaron: tcaron,\n\tTcedil: Tcedil,\n\ttcedil: tcedil,\n\tTcy: Tcy,\n\ttcy: tcy,\n\ttdot: tdot,\n\ttelrec: telrec,\n\tTfr: Tfr,\n\ttfr: tfr,\n\tthere4: there4,\n\ttherefore: therefore,\n\tTherefore: Therefore,\n\tTheta: Theta,\n\ttheta: theta,\n\tthetasym: thetasym,\n\tthetav: thetav,\n\tthickapprox: thickapprox,\n\tthicksim: thicksim,\n\tThickSpace: ThickSpace,\n\tThinSpace: ThinSpace,\n\tthinsp: thinsp,\n\tthkap: thkap,\n\tthksim: thksim,\n\tTHORN: THORN$1,\n\tthorn: thorn$1,\n\ttilde: tilde,\n\tTilde: Tilde,\n\tTildeEqual: TildeEqual,\n\tTildeFullEqual: TildeFullEqual,\n\tTildeTilde: TildeTilde,\n\ttimesbar: timesbar,\n\ttimesb: timesb,\n\ttimes: times$1,\n\ttimesd: timesd,\n\ttint: tint,\n\ttoea: toea,\n\ttopbot: topbot,\n\ttopcir: topcir,\n\ttop: top,\n\tTopf: Topf,\n\ttopf: topf,\n\ttopfork: topfork,\n\ttosa: tosa,\n\ttprime: tprime,\n\ttrade: trade,\n\tTRADE: TRADE,\n\ttriangle: triangle,\n\ttriangledown: triangledown,\n\ttriangleleft: triangleleft,\n\ttrianglelefteq: trianglelefteq,\n\ttriangleq: triangleq,\n\ttriangleright: triangleright,\n\ttrianglerighteq: trianglerighteq,\n\ttridot: tridot,\n\ttrie: trie,\n\ttriminus: triminus,\n\tTripleDot: TripleDot,\n\ttriplus: triplus,\n\ttrisb: trisb,\n\ttritime: tritime,\n\ttrpezium: trpezium,\n\tTscr: Tscr,\n\ttscr: tscr,\n\tTScy: TScy,\n\ttscy: tscy,\n\tTSHcy: TSHcy,\n\ttshcy: tshcy,\n\tTstrok: Tstrok,\n\ttstrok: tstrok,\n\ttwixt: twixt,\n\ttwoheadleftarrow: twoheadleftarrow,\n\ttwoheadrightarrow: twoheadrightarrow,\n\tUacute: Uacute$1,\n\tuacute: uacute$1,\n\tuarr: uarr,\n\tUarr: Uarr,\n\tuArr: uArr,\n\tUarrocir: Uarrocir,\n\tUbrcy: Ubrcy,\n\tubrcy: ubrcy,\n\tUbreve: Ubreve,\n\tubreve: ubreve,\n\tUcirc: Ucirc$1,\n\tucirc: ucirc$1,\n\tUcy: Ucy,\n\tucy: ucy,\n\tudarr: udarr,\n\tUdblac: Udblac,\n\tudblac: udblac,\n\tudhar: udhar,\n\tufisht: ufisht,\n\tUfr: Ufr,\n\tufr: ufr,\n\tUgrave: Ugrave$1,\n\tugrave: ugrave$1,\n\tuHar: uHar,\n\tuharl: uharl,\n\tuharr: uharr,\n\tuhblk: uhblk,\n\tulcorn: ulcorn,\n\tulcorner: ulcorner,\n\tulcrop: ulcrop,\n\tultri: ultri,\n\tUmacr: Umacr,\n\tumacr: umacr,\n\tuml: uml$1,\n\tUnderBar: UnderBar,\n\tUnderBrace: UnderBrace,\n\tUnderBracket: UnderBracket,\n\tUnderParenthesis: UnderParenthesis,\n\tUnion: Union,\n\tUnionPlus: UnionPlus,\n\tUogon: Uogon,\n\tuogon: uogon,\n\tUopf: Uopf,\n\tuopf: uopf,\n\tUpArrowBar: UpArrowBar,\n\tuparrow: uparrow,\n\tUpArrow: UpArrow,\n\tUparrow: Uparrow,\n\tUpArrowDownArrow: UpArrowDownArrow,\n\tupdownarrow: updownarrow,\n\tUpDownArrow: UpDownArrow,\n\tUpdownarrow: Updownarrow,\n\tUpEquilibrium: UpEquilibrium,\n\tupharpoonleft: upharpoonleft,\n\tupharpoonright: upharpoonright,\n\tuplus: uplus,\n\tUpperLeftArrow: UpperLeftArrow,\n\tUpperRightArrow: UpperRightArrow,\n\tupsi: upsi,\n\tUpsi: Upsi,\n\tupsih: upsih,\n\tUpsilon: Upsilon,\n\tupsilon: upsilon,\n\tUpTeeArrow: UpTeeArrow,\n\tUpTee: UpTee,\n\tupuparrows: upuparrows,\n\turcorn: urcorn,\n\turcorner: urcorner,\n\turcrop: urcrop,\n\tUring: Uring,\n\turing: uring,\n\turtri: urtri,\n\tUscr: Uscr,\n\tuscr: uscr,\n\tutdot: utdot,\n\tUtilde: Utilde,\n\tutilde: utilde,\n\tutri: utri,\n\tutrif: utrif,\n\tuuarr: uuarr,\n\tUuml: Uuml$1,\n\tuuml: uuml$1,\n\tuwangle: uwangle,\n\tvangrt: vangrt,\n\tvarepsilon: varepsilon,\n\tvarkappa: varkappa,\n\tvarnothing: varnothing,\n\tvarphi: varphi,\n\tvarpi: varpi,\n\tvarpropto: varpropto,\n\tvarr: varr,\n\tvArr: vArr,\n\tvarrho: varrho,\n\tvarsigma: varsigma,\n\tvarsubsetneq: varsubsetneq,\n\tvarsubsetneqq: varsubsetneqq,\n\tvarsupsetneq: varsupsetneq,\n\tvarsupsetneqq: varsupsetneqq,\n\tvartheta: vartheta,\n\tvartriangleleft: vartriangleleft,\n\tvartriangleright: vartriangleright,\n\tvBar: vBar,\n\tVbar: Vbar,\n\tvBarv: vBarv,\n\tVcy: Vcy,\n\tvcy: vcy,\n\tvdash: vdash,\n\tvDash: vDash,\n\tVdash: Vdash,\n\tVDash: VDash,\n\tVdashl: Vdashl,\n\tveebar: veebar,\n\tvee: vee,\n\tVee: Vee,\n\tveeeq: veeeq,\n\tvellip: vellip,\n\tverbar: verbar,\n\tVerbar: Verbar,\n\tvert: vert,\n\tVert: Vert,\n\tVerticalBar: VerticalBar,\n\tVerticalLine: VerticalLine,\n\tVerticalSeparator: VerticalSeparator,\n\tVerticalTilde: VerticalTilde,\n\tVeryThinSpace: VeryThinSpace,\n\tVfr: Vfr,\n\tvfr: vfr,\n\tvltri: vltri,\n\tvnsub: vnsub,\n\tvnsup: vnsup,\n\tVopf: Vopf,\n\tvopf: vopf,\n\tvprop: vprop,\n\tvrtri: vrtri,\n\tVscr: Vscr,\n\tvscr: vscr,\n\tvsubnE: vsubnE,\n\tvsubne: vsubne,\n\tvsupnE: vsupnE,\n\tvsupne: vsupne,\n\tVvdash: Vvdash,\n\tvzigzag: vzigzag,\n\tWcirc: Wcirc,\n\twcirc: wcirc,\n\twedbar: wedbar,\n\twedge: wedge,\n\tWedge: Wedge,\n\twedgeq: wedgeq,\n\tweierp: weierp,\n\tWfr: Wfr,\n\twfr: wfr,\n\tWopf: Wopf,\n\twopf: wopf,\n\twp: wp,\n\twr: wr,\n\twreath: wreath,\n\tWscr: Wscr,\n\twscr: wscr,\n\txcap: xcap,\n\txcirc: xcirc,\n\txcup: xcup,\n\txdtri: xdtri,\n\tXfr: Xfr,\n\txfr: xfr,\n\txharr: xharr,\n\txhArr: xhArr,\n\tXi: Xi,\n\txi: xi,\n\txlarr: xlarr,\n\txlArr: xlArr,\n\txmap: xmap,\n\txnis: xnis,\n\txodot: xodot,\n\tXopf: Xopf,\n\txopf: xopf,\n\txoplus: xoplus,\n\txotime: xotime,\n\txrarr: xrarr,\n\txrArr: xrArr,\n\tXscr: Xscr,\n\txscr: xscr,\n\txsqcup: xsqcup,\n\txuplus: xuplus,\n\txutri: xutri,\n\txvee: xvee,\n\txwedge: xwedge,\n\tYacute: Yacute$1,\n\tyacute: yacute$1,\n\tYAcy: YAcy,\n\tyacy: yacy,\n\tYcirc: Ycirc,\n\tycirc: ycirc,\n\tYcy: Ycy,\n\tycy: ycy,\n\tyen: yen$1,\n\tYfr: Yfr,\n\tyfr: yfr,\n\tYIcy: YIcy,\n\tyicy: yicy,\n\tYopf: Yopf,\n\tyopf: yopf,\n\tYscr: Yscr,\n\tyscr: yscr,\n\tYUcy: YUcy,\n\tyucy: yucy,\n\tyuml: yuml$1,\n\tYuml: Yuml,\n\tZacute: Zacute,\n\tzacute: zacute,\n\tZcaron: Zcaron,\n\tzcaron: zcaron,\n\tZcy: Zcy,\n\tzcy: zcy,\n\tZdot: Zdot,\n\tzdot: zdot,\n\tzeetrf: zeetrf,\n\tZeroWidthSpace: ZeroWidthSpace,\n\tZeta: Zeta,\n\tzeta: zeta,\n\tzfr: zfr,\n\tZfr: Zfr,\n\tZHcy: ZHcy,\n\tzhcy: zhcy,\n\tzigrarr: zigrarr,\n\tzopf: zopf,\n\tZopf: Zopf,\n\tZscr: Zscr,\n\tzscr: zscr,\n\tzwj: zwj,\n\tzwnj: zwnj\n};\n\nvar Aacute = \"Á\";\nvar aacute = \"á\";\nvar Acirc = \"Â\";\nvar acirc = \"â\";\nvar acute = \"´\";\nvar AElig = \"Æ\";\nvar aelig = \"æ\";\nvar Agrave = \"À\";\nvar agrave = \"à\";\nvar amp$1 = \"&\";\nvar AMP = \"&\";\nvar Aring = \"Å\";\nvar aring = \"å\";\nvar Atilde = \"Ã\";\nvar atilde = \"ã\";\nvar Auml = \"Ä\";\nvar auml = \"ä\";\nvar brvbar = \"¦\";\nvar Ccedil = \"Ç\";\nvar ccedil = \"ç\";\nvar cedil = \"¸\";\nvar cent = \"¢\";\nvar copy = \"©\";\nvar COPY = \"©\";\nvar curren = \"¤\";\nvar deg = \"°\";\nvar divide = \"÷\";\nvar Eacute = \"É\";\nvar eacute = \"é\";\nvar Ecirc = \"Ê\";\nvar ecirc = \"ê\";\nvar Egrave = \"È\";\nvar egrave = \"è\";\nvar ETH = \"Ð\";\nvar eth = \"ð\";\nvar Euml = \"Ë\";\nvar euml = \"ë\";\nvar frac12 = \"½\";\nvar frac14 = \"¼\";\nvar frac34 = \"¾\";\nvar gt$1 = \">\";\nvar GT = \">\";\nvar Iacute = \"Í\";\nvar iacute = \"í\";\nvar Icirc = \"Î\";\nvar icirc = \"î\";\nvar iexcl = \"¡\";\nvar Igrave = \"Ì\";\nvar igrave = \"ì\";\nvar iquest = \"¿\";\nvar Iuml = \"Ï\";\nvar iuml = \"ï\";\nvar laquo = \"«\";\nvar lt$1 = \"<\";\nvar LT = \"<\";\nvar macr = \"¯\";\nvar micro = \"µ\";\nvar middot = \"·\";\nvar nbsp = \" \";\nvar not = \"¬\";\nvar Ntilde = \"Ñ\";\nvar ntilde = \"ñ\";\nvar Oacute = \"Ó\";\nvar oacute = \"ó\";\nvar Ocirc = \"Ô\";\nvar ocirc = \"ô\";\nvar Ograve = \"Ò\";\nvar ograve = \"ò\";\nvar ordf = \"ª\";\nvar ordm = \"º\";\nvar Oslash = \"Ø\";\nvar oslash = \"ø\";\nvar Otilde = \"Õ\";\nvar otilde = \"õ\";\nvar Ouml = \"Ö\";\nvar ouml = \"ö\";\nvar para = \"¶\";\nvar plusmn = \"±\";\nvar pound = \"£\";\nvar quot$1 = \"\\\"\";\nvar QUOT = \"\\\"\";\nvar raquo = \"»\";\nvar reg = \"®\";\nvar REG = \"®\";\nvar sect = \"§\";\nvar shy = \"­\";\nvar sup1 = \"¹\";\nvar sup2 = \"²\";\nvar sup3 = \"³\";\nvar szlig = \"ß\";\nvar THORN = \"Þ\";\nvar thorn = \"þ\";\nvar times = \"×\";\nvar Uacute = \"Ú\";\nvar uacute = \"ú\";\nvar Ucirc = \"Û\";\nvar ucirc = \"û\";\nvar Ugrave = \"Ù\";\nvar ugrave = \"ù\";\nvar uml = \"¨\";\nvar Uuml = \"Ü\";\nvar uuml = \"ü\";\nvar Yacute = \"Ý\";\nvar yacute = \"ý\";\nvar yen = \"¥\";\nvar yuml = \"ÿ\";\nvar require$$1 = {\n\tAacute: Aacute,\n\taacute: aacute,\n\tAcirc: Acirc,\n\tacirc: acirc,\n\tacute: acute,\n\tAElig: AElig,\n\taelig: aelig,\n\tAgrave: Agrave,\n\tagrave: agrave,\n\tamp: amp$1,\n\tAMP: AMP,\n\tAring: Aring,\n\taring: aring,\n\tAtilde: Atilde,\n\tatilde: atilde,\n\tAuml: Auml,\n\tauml: auml,\n\tbrvbar: brvbar,\n\tCcedil: Ccedil,\n\tccedil: ccedil,\n\tcedil: cedil,\n\tcent: cent,\n\tcopy: copy,\n\tCOPY: COPY,\n\tcurren: curren,\n\tdeg: deg,\n\tdivide: divide,\n\tEacute: Eacute,\n\teacute: eacute,\n\tEcirc: Ecirc,\n\tecirc: ecirc,\n\tEgrave: Egrave,\n\tegrave: egrave,\n\tETH: ETH,\n\teth: eth,\n\tEuml: Euml,\n\teuml: euml,\n\tfrac12: frac12,\n\tfrac14: frac14,\n\tfrac34: frac34,\n\tgt: gt$1,\n\tGT: GT,\n\tIacute: Iacute,\n\tiacute: iacute,\n\tIcirc: Icirc,\n\ticirc: icirc,\n\tiexcl: iexcl,\n\tIgrave: Igrave,\n\tigrave: igrave,\n\tiquest: iquest,\n\tIuml: Iuml,\n\tiuml: iuml,\n\tlaquo: laquo,\n\tlt: lt$1,\n\tLT: LT,\n\tmacr: macr,\n\tmicro: micro,\n\tmiddot: middot,\n\tnbsp: nbsp,\n\tnot: not,\n\tNtilde: Ntilde,\n\tntilde: ntilde,\n\tOacute: Oacute,\n\toacute: oacute,\n\tOcirc: Ocirc,\n\tocirc: ocirc,\n\tOgrave: Ograve,\n\tograve: ograve,\n\tordf: ordf,\n\tordm: ordm,\n\tOslash: Oslash,\n\toslash: oslash,\n\tOtilde: Otilde,\n\totilde: otilde,\n\tOuml: Ouml,\n\touml: ouml,\n\tpara: para,\n\tplusmn: plusmn,\n\tpound: pound,\n\tquot: quot$1,\n\tQUOT: QUOT,\n\traquo: raquo,\n\treg: reg,\n\tREG: REG,\n\tsect: sect,\n\tshy: shy,\n\tsup1: sup1,\n\tsup2: sup2,\n\tsup3: sup3,\n\tszlig: szlig,\n\tTHORN: THORN,\n\tthorn: thorn,\n\ttimes: times,\n\tUacute: Uacute,\n\tuacute: uacute,\n\tUcirc: Ucirc,\n\tucirc: ucirc,\n\tUgrave: Ugrave,\n\tugrave: ugrave,\n\tuml: uml,\n\tUuml: Uuml,\n\tuuml: uuml,\n\tYacute: Yacute,\n\tyacute: yacute,\n\tyen: yen,\n\tyuml: yuml\n};\n\nvar amp = \"&\";\nvar apos = \"'\";\nvar gt = \">\";\nvar lt = \"<\";\nvar quot = \"\\\"\";\nvar require$$0$1 = {\n\tamp: amp,\n\tapos: apos,\n\tgt: gt,\n\tlt: lt,\n\tquot: quot\n};\n\nvar decode_codepoint = {};\n\nvar require$$0 = {\n\t\"0\": 65533,\n\t\"128\": 8364,\n\t\"130\": 8218,\n\t\"131\": 402,\n\t\"132\": 8222,\n\t\"133\": 8230,\n\t\"134\": 8224,\n\t\"135\": 8225,\n\t\"136\": 710,\n\t\"137\": 8240,\n\t\"138\": 352,\n\t\"139\": 8249,\n\t\"140\": 338,\n\t\"142\": 381,\n\t\"145\": 8216,\n\t\"146\": 8217,\n\t\"147\": 8220,\n\t\"148\": 8221,\n\t\"149\": 8226,\n\t\"150\": 8211,\n\t\"151\": 8212,\n\t\"152\": 732,\n\t\"153\": 8482,\n\t\"154\": 353,\n\t\"155\": 8250,\n\t\"156\": 339,\n\t\"158\": 382,\n\t\"159\": 376\n};\n\nvar __importDefault$2 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(decode_codepoint, \"__esModule\", { value: true });\nvar decode_json_1 = __importDefault$2(require$$0);\n// Adapted from https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nvar fromCodePoint$2 = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.fromCodePoint ||\n function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n };\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n return fromCodePoint$2(codePoint);\n}\ndecode_codepoint.default = decodeCodePoint;\n\nvar __importDefault$1 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(decode, \"__esModule\", { value: true });\ndecode.decodeHTML = decode.decodeHTMLStrict = decode.decodeXML = void 0;\nvar entities_json_1$1 = __importDefault$1(require$$1$1);\nvar legacy_json_1 = __importDefault$1(require$$1);\nvar xml_json_1$1 = __importDefault$1(require$$0$1);\nvar decode_codepoint_1 = __importDefault$1(decode_codepoint);\nvar strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\\da-fA-F]+|#\\d+);/g;\ndecode.decodeXML = getStrictDecoder(xml_json_1$1.default);\ndecode.decodeHTMLStrict = getStrictDecoder(entities_json_1$1.default);\nfunction getStrictDecoder(map) {\n var replace = getReplacer(map);\n return function (str) { return String(str).replace(strictEntityRe, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\ndecode.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1$1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1$1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n // TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return map[str.slice(1, -1)] || str;\n };\n}\n\nvar encode = {};\n\nvar __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(encode, \"__esModule\", { value: true });\nencode.escapeUTF8 = encode.escape = encode.encodeNonAsciiHTML = encode.encodeHTML = encode.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require$$0$1);\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nencode.encodeXML = getASCIIEncoder(inverseXML);\nvar entities_json_1 = __importDefault(require$$1$1);\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\n/**\n * Encodes all entities and non-ASCII characters in the input.\n *\n * This includes characters that are valid ASCII characters in HTML documents.\n * For example `#` will be encoded as `#`. To get a more compact output,\n * consider using the `encodeNonAsciiHTML` function.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nencode.encodeHTML = getInverse(inverseHTML, htmlReplacer);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nencode.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\n// /[^\\0-\\x7F]/gu\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nvar getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n function (str) { return str.codePointAt(0); }\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n function (c) {\n return (c.charCodeAt(0) - 0xd800) * 0x400 +\n c.charCodeAt(1) -\n 0xdc00 +\n 0x10000;\n };\nfunction singleCharReplacer(c) {\n return \"&#x\" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0))\n .toString(16)\n .toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reEscapeChars = new RegExp(xmlReplacer.source + \"|\" + reNonASCII.source, \"g\");\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nfunction escape(data) {\n return data.replace(reEscapeChars, singleCharReplacer);\n}\nencode.escape = escape;\n/**\n * Encodes all characters not valid in XML documents using numeric hexadecimal\n * reference (eg. `ü`).\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nfunction escapeUTF8(data) {\n return data.replace(xmlReplacer, singleCharReplacer);\n}\nencode.escapeUTF8 = escapeUTF8;\nfunction getASCIIEncoder(obj) {\n return function (data) {\n return data.replace(reEscapeChars, function (c) { return obj[c] || singleCharReplacer(c); });\n };\n}\n\n(function (exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = void 0;\nvar decode_1 = decode;\nvar encode_1 = encode;\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeXML` or `decodeHTML` directly.\n */\nfunction decode$1(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode$1;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeHTMLStrict` or `decodeXML` directly.\n */\nfunction decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `encodeHTML`, `encodeXML` or `encodeNonAsciiHTML` directly.\n */\nfunction encode$1(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode$1;\nvar encode_2 = encode;\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return encode_2.encodeXML; } });\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeNonAsciiHTML\", { enumerable: true, get: function () { return encode_2.encodeNonAsciiHTML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return encode_2.escape; } });\nObject.defineProperty(exports, \"escapeUTF8\", { enumerable: true, get: function () { return encode_2.escapeUTF8; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nvar decode_2 = decode;\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\n}(lib));\n\nvar ENTITY = '&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});';\nvar C_BACKSLASH$1 = 92;\nvar reBackslashOrAmp = /[\\\\&]/;\nvar ESCAPABLE = '[!\"#$%&\\'()*+,./:;<=>?@[\\\\\\\\\\\\]^_`{|}~-]';\nvar reEntityOrEscapedChar = new RegExp(\"\\\\\\\\\" + ESCAPABLE + \"|\" + ENTITY, 'gi');\nvar XMLSPECIAL = '[&<>\"]';\nvar reXmlSpecial = new RegExp(XMLSPECIAL, 'g');\nvar unescapeChar = function (s) {\n if (s.charCodeAt(0) === C_BACKSLASH$1) {\n return s.charAt(1);\n }\n return lib.decodeHTML(s);\n};\n// Replace entities and backslash escapes with literal characters.\nfunction unescapeString(s) {\n if (reBackslashOrAmp.test(s)) {\n return s.replace(reEntityOrEscapedChar, unescapeChar);\n }\n return s;\n}\nfunction normalizeURI(uri) {\n try {\n return encode_1(uri);\n }\n catch (err) {\n return uri;\n }\n}\nfunction replaceUnsafeChar(s) {\n switch (s) {\n case '&':\n return '&';\n case '<':\n return '<';\n case '>':\n return '>';\n case '\"':\n return '"';\n default:\n return s;\n }\n}\nfunction escapeXml(s) {\n if (reXmlSpecial.test(s)) {\n return s.replace(reXmlSpecial, replaceUnsafeChar);\n }\n return s;\n}\nfunction repeat(str, count) {\n var arr = [];\n for (var i = 0; i < count; i++) {\n arr.push(str);\n }\n return arr.join('');\n}\nfunction isEmpty(str) {\n if (!str) {\n return true;\n }\n return !/[^ \\t]+/.test(str);\n}\n\nvar NodeWalker = /** @class */ (function () {\n function NodeWalker(root) {\n this.current = root;\n this.root = root;\n this.entering = true;\n }\n NodeWalker.prototype.next = function () {\n var cur = this.current;\n var entering = this.entering;\n if (cur === null) {\n return null;\n }\n var container = isContainer$1(cur);\n if (entering && container) {\n if (cur.firstChild) {\n this.current = cur.firstChild;\n this.entering = true;\n }\n else {\n // stay on node but exit\n this.entering = false;\n }\n }\n else if (cur === this.root) {\n this.current = null;\n }\n else if (cur.next === null) {\n this.current = cur.parent;\n this.entering = false;\n }\n else {\n this.current = cur.next;\n this.entering = true;\n }\n return { entering: entering, node: cur };\n };\n NodeWalker.prototype.resumeAt = function (node, entering) {\n this.current = node;\n this.entering = entering === true;\n };\n return NodeWalker;\n}());\n\nfunction isContainer$1(node) {\n switch (node.type) {\n case 'document':\n case 'blockQuote':\n case 'list':\n case 'item':\n case 'paragraph':\n case 'heading':\n case 'emph':\n case 'strong':\n case 'strike':\n case 'link':\n case 'image':\n case 'table':\n case 'tableHead':\n case 'tableBody':\n case 'tableRow':\n case 'tableCell':\n case 'tableDelimRow':\n case 'customInline':\n return true;\n default:\n return false;\n }\n}\nvar lastNodeId = 1;\nvar nodeMap = {};\nfunction getNodeById(id) {\n return nodeMap[id];\n}\nfunction removeNodeById(id) {\n delete nodeMap[id];\n}\nfunction removeAllNode() {\n nodeMap = {};\n}\nvar Node$1 = /** @class */ (function () {\n function Node(nodeType, sourcepos) {\n this.parent = null;\n this.prev = null;\n this.next = null;\n // only for container node\n this.firstChild = null;\n this.lastChild = null;\n // only for leaf node\n this.literal = null;\n if (nodeType === 'document') {\n this.id = -1;\n }\n else {\n this.id = lastNodeId++;\n }\n this.type = nodeType;\n this.sourcepos = sourcepos;\n nodeMap[this.id] = this;\n }\n Node.prototype.isContainer = function () {\n return isContainer$1(this);\n };\n Node.prototype.unlink = function () {\n if (this.prev) {\n this.prev.next = this.next;\n }\n else if (this.parent) {\n this.parent.firstChild = this.next;\n }\n if (this.next) {\n this.next.prev = this.prev;\n }\n else if (this.parent) {\n this.parent.lastChild = this.prev;\n }\n this.parent = null;\n this.next = null;\n this.prev = null;\n };\n Node.prototype.replaceWith = function (node) {\n this.insertBefore(node);\n this.unlink();\n };\n Node.prototype.insertAfter = function (sibling) {\n sibling.unlink();\n sibling.next = this.next;\n if (sibling.next) {\n sibling.next.prev = sibling;\n }\n sibling.prev = this;\n this.next = sibling;\n if (this.parent) {\n sibling.parent = this.parent;\n if (!sibling.next) {\n sibling.parent.lastChild = sibling;\n }\n }\n };\n Node.prototype.insertBefore = function (sibling) {\n sibling.unlink();\n sibling.prev = this.prev;\n if (sibling.prev) {\n sibling.prev.next = sibling;\n }\n sibling.next = this;\n this.prev = sibling;\n sibling.parent = this.parent;\n if (!sibling.prev) {\n sibling.parent.firstChild = sibling;\n }\n };\n Node.prototype.appendChild = function (child) {\n child.unlink();\n child.parent = this;\n if (this.lastChild) {\n this.lastChild.next = child;\n child.prev = this.lastChild;\n this.lastChild = child;\n }\n else {\n this.firstChild = child;\n this.lastChild = child;\n }\n };\n Node.prototype.prependChild = function (child) {\n child.unlink();\n child.parent = this;\n if (this.firstChild) {\n this.firstChild.prev = child;\n child.next = this.firstChild;\n this.firstChild = child;\n }\n else {\n this.firstChild = child;\n this.lastChild = child;\n }\n };\n Node.prototype.walker = function () {\n return new NodeWalker(this);\n };\n return Node;\n}());\nvar BlockNode = /** @class */ (function (_super) {\n __extends(BlockNode, _super);\n function BlockNode(nodeType, sourcepos) {\n var _this = _super.call(this, nodeType, sourcepos) || this;\n // temporal data (for parsing)\n _this.open = true;\n _this.lineOffsets = null;\n _this.stringContent = null;\n _this.lastLineBlank = false;\n _this.lastLineChecked = false;\n _this.type = nodeType;\n return _this;\n }\n return BlockNode;\n}(Node$1));\nvar ListNode = /** @class */ (function (_super) {\n __extends(ListNode, _super);\n function ListNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.listData = null;\n return _this;\n }\n return ListNode;\n}(BlockNode));\nvar HeadingNode = /** @class */ (function (_super) {\n __extends(HeadingNode, _super);\n function HeadingNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.level = 0;\n _this.headingType = 'atx';\n return _this;\n }\n return HeadingNode;\n}(BlockNode));\nvar CodeBlockNode = /** @class */ (function (_super) {\n __extends(CodeBlockNode, _super);\n function CodeBlockNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isFenced = false;\n _this.fenceChar = null;\n _this.fenceLength = 0;\n _this.fenceOffset = -1;\n _this.info = null;\n _this.infoPadding = 0;\n return _this;\n }\n return CodeBlockNode;\n}(BlockNode));\nvar TableNode = /** @class */ (function (_super) {\n __extends(TableNode, _super);\n function TableNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.columns = [];\n return _this;\n }\n return TableNode;\n}(BlockNode));\nvar TableCellNode = /** @class */ (function (_super) {\n __extends(TableCellNode, _super);\n function TableCellNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.startIdx = 0;\n _this.endIdx = 0;\n _this.paddingLeft = 0;\n _this.paddingRight = 0;\n _this.ignored = false;\n return _this;\n }\n return TableCellNode;\n}(BlockNode));\nvar RefDefNode = /** @class */ (function (_super) {\n __extends(RefDefNode, _super);\n function RefDefNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.title = '';\n _this.dest = '';\n _this.label = '';\n return _this;\n }\n return RefDefNode;\n}(BlockNode));\nvar CustomBlockNode = /** @class */ (function (_super) {\n __extends(CustomBlockNode, _super);\n function CustomBlockNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.syntaxLength = 0;\n _this.offset = -1;\n _this.info = '';\n return _this;\n }\n return CustomBlockNode;\n}(BlockNode));\nvar HtmlBlockNode = /** @class */ (function (_super) {\n __extends(HtmlBlockNode, _super);\n function HtmlBlockNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.htmlBlockType = -1;\n return _this;\n }\n return HtmlBlockNode;\n}(BlockNode));\nvar LinkNode = /** @class */ (function (_super) {\n __extends(LinkNode, _super);\n function LinkNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.destination = null;\n _this.title = null;\n _this.extendedAutolink = false;\n return _this;\n }\n return LinkNode;\n}(Node$1));\nvar CodeNode = /** @class */ (function (_super) {\n __extends(CodeNode, _super);\n function CodeNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.tickCount = 0;\n return _this;\n }\n return CodeNode;\n}(Node$1));\nvar CustomInlineNode = /** @class */ (function (_super) {\n __extends(CustomInlineNode, _super);\n function CustomInlineNode() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.info = '';\n return _this;\n }\n return CustomInlineNode;\n}(Node$1));\nfunction createNode$1(type, sourcepos) {\n switch (type) {\n case 'heading':\n return new HeadingNode(type, sourcepos);\n case 'list':\n case 'item':\n return new ListNode(type, sourcepos);\n case 'link':\n case 'image':\n return new LinkNode(type, sourcepos);\n case 'codeBlock':\n return new CodeBlockNode(type, sourcepos);\n case 'htmlBlock':\n return new HtmlBlockNode(type, sourcepos);\n case 'table':\n return new TableNode(type, sourcepos);\n case 'tableCell':\n return new TableCellNode(type, sourcepos);\n case 'document':\n case 'paragraph':\n case 'blockQuote':\n case 'thematicBreak':\n case 'tableRow':\n case 'tableBody':\n case 'tableHead':\n case 'frontMatter':\n return new BlockNode(type, sourcepos);\n case 'code':\n return new CodeNode(type, sourcepos);\n case 'refDef':\n return new RefDefNode(type, sourcepos);\n case 'customBlock':\n return new CustomBlockNode(type, sourcepos);\n case 'customInline':\n return new CustomInlineNode(type, sourcepos);\n default:\n return new Node$1(type, sourcepos);\n }\n}\nfunction isCodeBlock(node) {\n return node.type === 'codeBlock';\n}\nfunction isHtmlBlock(node) {\n return node.type === 'htmlBlock';\n}\nfunction isHeading(node) {\n return node.type === 'heading';\n}\nfunction isList(node) {\n return node.type === 'list';\n}\nfunction isTable(node) {\n return node.type === 'table';\n}\nfunction isRefDef(node) {\n return node.type === 'refDef';\n}\nfunction isCustomBlock(node) {\n return node.type === 'customBlock';\n}\nfunction isCustomInline(node) {\n return node.type === 'customInline';\n}\nfunction text$1(s, sourcepos) {\n var node = createNode$1('text', sourcepos);\n node.literal = s;\n return node;\n}\n\nvar TAGNAME = '[A-Za-z][A-Za-z0-9-]*';\nvar ATTRIBUTENAME = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar UNQUOTEDVALUE = '[^\"\\'=<>`\\\\x00-\\\\x20]+';\nvar SINGLEQUOTEDVALUE = \"'[^']*'\";\nvar DOUBLEQUOTEDVALUE = '\"[^\"]*\"';\nvar ATTRIBUTEVALUE = \"(?:\" + UNQUOTEDVALUE + \"|\" + SINGLEQUOTEDVALUE + \"|\" + DOUBLEQUOTEDVALUE + \")\";\nvar ATTRIBUTEVALUESPEC = \"\" + '(?:\\\\s*=\\\\s*' + ATTRIBUTEVALUE + \")\";\nvar ATTRIBUTE = \"\" + '(?:\\\\s+' + ATTRIBUTENAME + ATTRIBUTEVALUESPEC + \"?)\";\nvar OPENTAG = \"<\" + TAGNAME + ATTRIBUTE + \"*\\\\s*/?>\";\nvar CLOSETAG = \"]\";\nvar HTMLCOMMENT = '|';\nvar PROCESSINGINSTRUCTION = '[<][?].*?[?][>]';\nvar DECLARATION = ']*>';\nvar CDATA = '';\nvar HTMLTAG = \"(?:\" + OPENTAG + \"|\" + CLOSETAG + \"|\" + HTMLCOMMENT + \"|\" + PROCESSINGINSTRUCTION + \"|\" + DECLARATION + \"|\" + CDATA + \")\";\nvar reHtmlTag = new RegExp(\"^\" + HTMLTAG, 'i');\n\n// derived from https://github.com/mathiasbynens/String.fromCodePoint\n/*! http://mths.be/fromcodepoint v0.2.1 by @mathias */\nvar fromCodePoint;\nif (String.fromCodePoint) {\n fromCodePoint = function (_) {\n try {\n return String.fromCodePoint(_);\n }\n catch (e) {\n if (e instanceof RangeError) {\n return String.fromCharCode(0xfffd);\n }\n throw e;\n }\n };\n}\nelse {\n var stringFromCharCode_1 = String.fromCharCode;\n var floor_1 = Math.floor;\n fromCodePoint = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = args.length;\n if (!length) {\n return '';\n }\n var result = '';\n while (++index < length) {\n var codePoint = Number(args[index]);\n if (!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n floor_1(codePoint) !== codePoint // not an integer\n ) {\n return String.fromCharCode(0xfffd);\n }\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint);\n }\n else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xd800;\n lowSurrogate = (codePoint % 0x400) + 0xdc00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode_1.apply(void 0, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n}\nvar fromCodePoint$1 = fromCodePoint;\n\nvar DOMAIN = '(?:[w-]+.)*[A-Za-z0-9-]+.[A-Za-z0-9-]+';\nvar PATH = '[^<\\\\s]*[^ lastIdx) {\n newNodes.push(text$1(literal.substring(lastIdx, range[0]), sourcepos(lastIdx, range[0] - 1)));\n }\n var linkNode = createNode$1('link', sourcepos.apply(void 0, range));\n linkNode.appendChild(text$1(linkText, sourcepos.apply(void 0, range)));\n linkNode.destination = url;\n linkNode.extendedAutolink = true;\n newNodes.push(linkNode);\n lastIdx = range[1] + 1;\n }\n if (lastIdx < literal.length) {\n newNodes.push(text$1(literal.substring(lastIdx), sourcepos(lastIdx, literal.length - 1)));\n }\n for (var _c = 0, newNodes_1 = newNodes; _c < newNodes_1.length; _c++) {\n var newNode = newNodes_1[_c];\n node.insertBefore(newNode);\n }\n node.unlink();\n }\n };\n while ((event = walker.next())) {\n _loop_1();\n }\n}\n\nfunction last(arr) {\n return arr[arr.length - 1];\n}\n// normalize a reference in reference link (remove []s, trim,\n// collapse internal space, unicode case fold.\n// See commonmark/commonmark.js#168.\nfunction normalizeReference(str) {\n return str\n .slice(1, str.length - 1)\n .trim()\n .replace(/[ \\t\\r\\n]+/, ' ')\n .toLowerCase()\n .toUpperCase();\n}\nfunction iterateObject(obj, iteratee) {\n Object.keys(obj).forEach(function (key) {\n iteratee(key, obj[key]);\n });\n}\nfunction omit(obj) {\n var propNames = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n propNames[_i - 1] = arguments[_i];\n }\n var resultMap = __assign({}, obj);\n propNames.forEach(function (key) {\n delete resultMap[key];\n });\n return resultMap;\n}\nfunction isEmptyObj(obj) {\n return !Object.keys(obj).length;\n}\nfunction clearObj(obj) {\n Object.keys(obj).forEach(function (key) {\n delete obj[key];\n });\n}\n\nvar C_NEWLINE = 10;\nvar C_ASTERISK = 42;\nvar C_UNDERSCORE = 95;\nvar C_BACKTICK = 96;\nvar C_OPEN_BRACKET$1 = 91;\nvar C_CLOSE_BRACKET = 93;\nvar C_TILDE = 126;\nvar C_LESSTHAN$1 = 60;\nvar C_BANG = 33;\nvar C_BACKSLASH = 92;\nvar C_AMPERSAND = 38;\nvar C_OPEN_PAREN = 40;\nvar C_CLOSE_PAREN = 41;\nvar C_COLON = 58;\nvar C_SINGLEQUOTE = 39;\nvar C_DOUBLEQUOTE = 34;\nvar C_DOLLAR = 36;\n// Some regexps used in inline parser:\nvar ESCAPED_CHAR = \"\\\\\\\\\" + ESCAPABLE;\nvar rePunctuation = new RegExp(/[!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E42\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDF3C-\\uDF3E]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]/);\nvar reLinkTitle = new RegExp(\"^(?:\\\"(\" + ESCAPED_CHAR + \"|[^\\\"\\\\x00])*\\\"\" +\n \"|\" +\n (\"'(\" + ESCAPED_CHAR + \"|[^'\\\\x00])*'\") +\n \"|\" +\n (\"\\\\((\" + ESCAPED_CHAR + \"|[^()\\\\x00])*\\\\))\"));\nvar reLinkDestinationBraces = /^(?:<(?:[^<>\\n\\\\\\x00]|\\\\.)*>)/;\nvar reEscapable = new RegExp(\"^\" + ESCAPABLE);\nvar reEntityHere = new RegExp(\"^\" + ENTITY, 'i');\nvar reTicks = /`+/;\nvar reTicksHere = /^`+/;\nvar reEllipses = /\\.\\.\\./g;\nvar reDash = /--+/g;\nvar reEmailAutolink = /^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;\nvar reAutolink = /^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\\x00-\\x20]*>/i;\nvar reSpnl = /^ *(?:\\n *)?/;\nvar reWhitespaceChar = /^[ \\t\\n\\x0b\\x0c\\x0d]/;\nvar reUnicodeWhitespaceChar = /^\\s/;\nvar reFinalSpace = / *$/;\nvar reInitialSpace = /^ */;\nvar reSpaceAtEndOfLine = /^ *(?:\\n|$)/;\nvar reLinkLabel = /^\\[(?:[^\\\\\\[\\]]|\\\\.){0,1000}\\]/;\n// Matches a string of non-special characters.\nvar reMain = /^[^\\n`\\[\\]\\\\!<&*_'\"~$]+/m;\nvar InlineParser = /** @class */ (function () {\n function InlineParser(options) {\n // An InlineParser keeps track of a subject (a string to be parsed)\n // and a position in that subject.\n this.subject = '';\n this.delimiters = null; // used by handleDelim method\n this.brackets = null;\n this.pos = 0;\n this.lineStartNum = 0;\n this.lineIdx = 0;\n this.lineOffsets = [0];\n this.linePosOffset = 0;\n this.refMap = {};\n this.refLinkCandidateMap = {};\n this.refDefCandidateMap = {};\n this.options = options;\n }\n InlineParser.prototype.sourcepos = function (start, end) {\n var linePosOffset = this.linePosOffset + this.lineOffsets[this.lineIdx];\n var lineNum = this.lineStartNum + this.lineIdx;\n var startpos = [lineNum, start + linePosOffset];\n if (typeof end === 'number') {\n return [startpos, [lineNum, end + linePosOffset]];\n }\n return startpos;\n };\n InlineParser.prototype.nextLine = function () {\n this.lineIdx += 1;\n this.linePosOffset = -this.pos;\n };\n // If re matches at current position in the subject, advance\n // position in subject and return the match; otherwise return null.\n InlineParser.prototype.match = function (re) {\n var m = re.exec(this.subject.slice(this.pos));\n if (m === null) {\n return null;\n }\n this.pos += m.index + m[0].length;\n return m[0];\n };\n // Returns the code for the character at the current subject position, or -1\n // there are no more characters.\n InlineParser.prototype.peek = function () {\n if (this.pos < this.subject.length) {\n return this.subject.charCodeAt(this.pos);\n }\n return -1;\n };\n // Parse zero or more space characters, including at most one newline\n InlineParser.prototype.spnl = function () {\n this.match(reSpnl);\n return true;\n };\n // All of the parsers below try to match something at the current position\n // in the subject. If they succeed in matching anything, they\n // return the inline matched, advancing the subject.\n // Attempt to parse backticks, adding either a backtick code span or a\n // literal sequence of backticks.\n InlineParser.prototype.parseBackticks = function (block) {\n var startpos = this.pos + 1;\n var ticks = this.match(reTicksHere);\n if (ticks === null) {\n return false;\n }\n var afterOpenTicks = this.pos;\n var matched;\n while ((matched = this.match(reTicks)) !== null) {\n if (matched === ticks) {\n var contents = this.subject.slice(afterOpenTicks, this.pos - ticks.length);\n var sourcepos = this.sourcepos(startpos, this.pos);\n var lines = contents.split('\\n');\n if (lines.length > 1) {\n var lastLine = last(lines);\n this.lineIdx += lines.length - 1;\n this.linePosOffset = -(this.pos - lastLine.length - ticks.length);\n sourcepos[1] = this.sourcepos(this.pos);\n contents = lines.join(' ');\n }\n var node = createNode$1('code', sourcepos);\n if (contents.length > 0 &&\n contents.match(/[^ ]/) !== null &&\n contents[0] == ' ' &&\n contents[contents.length - 1] == ' ') {\n node.literal = contents.slice(1, contents.length - 1);\n }\n else {\n node.literal = contents;\n }\n node.tickCount = ticks.length;\n block.appendChild(node);\n return true;\n }\n }\n // If we got here, we didn't match a closing backtick sequence.\n this.pos = afterOpenTicks;\n block.appendChild(text$1(ticks, this.sourcepos(startpos, this.pos - 1)));\n return true;\n };\n // Parse a backslash-escaped special character, adding either the escaped\n // character, a hard line break (if the backslash is followed by a newline),\n // or a literal backslash to the block's children. Assumes current character\n // is a backslash.\n InlineParser.prototype.parseBackslash = function (block) {\n var subj = this.subject;\n var node;\n this.pos += 1;\n var startpos = this.pos;\n if (this.peek() === C_NEWLINE) {\n this.pos += 1;\n node = createNode$1('linebreak', this.sourcepos(this.pos - 1, this.pos));\n block.appendChild(node);\n this.nextLine();\n }\n else if (reEscapable.test(subj.charAt(this.pos))) {\n block.appendChild(text$1(subj.charAt(this.pos), this.sourcepos(startpos, this.pos)));\n this.pos += 1;\n }\n else {\n block.appendChild(text$1('\\\\', this.sourcepos(startpos, startpos)));\n }\n return true;\n };\n // Attempt to parse an autolink (URL or email in pointy brackets).\n InlineParser.prototype.parseAutolink = function (block) {\n var m;\n var dest;\n var node;\n var startpos = this.pos + 1;\n if ((m = this.match(reEmailAutolink))) {\n dest = m.slice(1, m.length - 1);\n node = createNode$1('link', this.sourcepos(startpos, this.pos));\n node.destination = normalizeURI(\"mailto:\" + dest);\n node.title = '';\n node.appendChild(text$1(dest, this.sourcepos(startpos + 1, this.pos - 1)));\n block.appendChild(node);\n return true;\n }\n if ((m = this.match(reAutolink))) {\n dest = m.slice(1, m.length - 1);\n node = createNode$1('link', this.sourcepos(startpos, this.pos));\n node.destination = normalizeURI(dest);\n node.title = '';\n node.appendChild(text$1(dest, this.sourcepos(startpos + 1, this.pos - 1)));\n block.appendChild(node);\n return true;\n }\n return false;\n };\n // Attempt to parse a raw HTML tag.\n InlineParser.prototype.parseHtmlTag = function (block) {\n var startpos = this.pos + 1;\n var m = this.match(reHtmlTag);\n if (m === null) {\n return false;\n }\n var node = createNode$1('htmlInline', this.sourcepos(startpos, this.pos));\n node.literal = m;\n block.appendChild(node);\n return true;\n };\n // Scan a sequence of characters with code cc, and return information about\n // the number of delimiters and whether they are positioned such that\n // they can open and/or close emphasis or strong emphasis. A utility\n // function for strong/emph parsing.\n InlineParser.prototype.scanDelims = function (cc) {\n var numdelims = 0;\n var startpos = this.pos;\n if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {\n numdelims++;\n this.pos++;\n }\n else {\n while (this.peek() === cc) {\n numdelims++;\n this.pos++;\n }\n }\n if (numdelims === 0 || (numdelims < 2 && (cc === C_TILDE || cc === C_DOLLAR))) {\n this.pos = startpos;\n return null;\n }\n var charBefore = startpos === 0 ? '\\n' : this.subject.charAt(startpos - 1);\n var ccAfter = this.peek();\n var charAfter;\n if (ccAfter === -1) {\n charAfter = '\\n';\n }\n else {\n charAfter = fromCodePoint$1(ccAfter);\n }\n var afterIsWhitespace = reUnicodeWhitespaceChar.test(charAfter);\n var afterIsPunctuation = rePunctuation.test(charAfter);\n var beforeIsWhitespace = reUnicodeWhitespaceChar.test(charBefore);\n var beforeIsPunctuation = rePunctuation.test(charBefore);\n var leftFlanking = !afterIsWhitespace && (!afterIsPunctuation || beforeIsWhitespace || beforeIsPunctuation);\n var rightFlanking = !beforeIsWhitespace && (!beforeIsPunctuation || afterIsWhitespace || afterIsPunctuation);\n var canOpen;\n var canClose;\n if (cc === C_UNDERSCORE) {\n canOpen = leftFlanking && (!rightFlanking || beforeIsPunctuation);\n canClose = rightFlanking && (!leftFlanking || afterIsPunctuation);\n }\n else if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {\n canOpen = leftFlanking && !rightFlanking;\n canClose = rightFlanking;\n }\n else if (cc === C_DOLLAR) {\n canOpen = !afterIsWhitespace;\n canClose = !beforeIsWhitespace;\n }\n else {\n canOpen = leftFlanking;\n canClose = rightFlanking;\n }\n this.pos = startpos;\n return { numdelims: numdelims, canOpen: canOpen, canClose: canClose };\n };\n // Handle a delimiter marker for emphasis or a quote.\n InlineParser.prototype.handleDelim = function (cc, block) {\n var res = this.scanDelims(cc);\n if (!res) {\n return false;\n }\n var numdelims = res.numdelims;\n var startpos = this.pos + 1;\n var contents;\n this.pos += numdelims;\n if (cc === C_SINGLEQUOTE) {\n contents = '\\u2019';\n }\n else if (cc === C_DOUBLEQUOTE) {\n contents = '\\u201C';\n }\n else {\n contents = this.subject.slice(startpos - 1, this.pos);\n }\n var node = text$1(contents, this.sourcepos(startpos, this.pos));\n block.appendChild(node);\n // Add entry to stack for this opener\n if ((res.canOpen || res.canClose) &&\n (this.options.smart || (cc !== C_SINGLEQUOTE && cc !== C_DOUBLEQUOTE))) {\n this.delimiters = {\n cc: cc,\n numdelims: numdelims,\n origdelims: numdelims,\n node: node,\n previous: this.delimiters,\n next: null,\n canOpen: res.canOpen,\n canClose: res.canClose,\n };\n if (this.delimiters.previous) {\n this.delimiters.previous.next = this.delimiters;\n }\n }\n return true;\n };\n InlineParser.prototype.removeDelimiter = function (delim) {\n if (delim.previous !== null) {\n delim.previous.next = delim.next;\n }\n if (delim.next === null) {\n // top of stack\n this.delimiters = delim.previous;\n }\n else {\n delim.next.previous = delim.previous;\n }\n };\n InlineParser.prototype.removeDelimitersBetween = function (bottom, top) {\n if (bottom.next !== top) {\n bottom.next = top;\n top.previous = bottom;\n }\n };\n /**\n * Process all delimiters - emphasis, strong emphasis, strikethrough(gfm)\n * If the smart punctuation options is true,\n * convert single/double quotes to corresponding unicode characters.\n **/\n InlineParser.prototype.processEmphasis = function (stackBottom) {\n var _a;\n var opener;\n var closer;\n var oldCloser;\n var openerInl, closerInl;\n var openerFound;\n var oddMatch = false;\n var openersBottom = (_a = {},\n _a[C_UNDERSCORE] = [stackBottom, stackBottom, stackBottom],\n _a[C_ASTERISK] = [stackBottom, stackBottom, stackBottom],\n _a[C_SINGLEQUOTE] = [stackBottom],\n _a[C_DOUBLEQUOTE] = [stackBottom],\n _a[C_TILDE] = [stackBottom],\n _a[C_DOLLAR] = [stackBottom],\n _a);\n // find first closer above stackBottom:\n closer = this.delimiters;\n while (closer !== null && closer.previous !== stackBottom) {\n closer = closer.previous;\n }\n // move forward, looking for closers, and handling each\n while (closer !== null) {\n var closercc = closer.cc;\n var closerEmph = closercc === C_UNDERSCORE || closercc === C_ASTERISK;\n if (!closer.canClose) {\n closer = closer.next;\n }\n else {\n // found emphasis closer. now look back for first matching opener:\n opener = closer.previous;\n openerFound = false;\n while (opener !== null &&\n opener !== stackBottom &&\n opener !== openersBottom[closercc][closerEmph ? closer.origdelims % 3 : 0]) {\n oddMatch =\n closerEmph &&\n (closer.canOpen || opener.canClose) &&\n closer.origdelims % 3 !== 0 &&\n (opener.origdelims + closer.origdelims) % 3 === 0;\n if (opener.cc === closer.cc && opener.canOpen && !oddMatch) {\n openerFound = true;\n break;\n }\n opener = opener.previous;\n }\n oldCloser = closer;\n if (closerEmph || closercc === C_TILDE || closercc === C_DOLLAR) {\n if (!openerFound) {\n closer = closer.next;\n }\n else if (opener) {\n // (null opener check for type narrowing)\n // calculate actual number of delimiters used from closer\n var useDelims = closer.numdelims >= 2 && opener.numdelims >= 2 ? 2 : 1;\n var emptyDelims = closerEmph ? 0 : 1;\n openerInl = opener.node;\n closerInl = closer.node;\n // build contents for new emph element\n var nodeType = closerEmph\n ? useDelims === 1\n ? 'emph'\n : 'strong'\n : 'strike';\n if (closercc === C_DOLLAR) {\n nodeType = 'customInline';\n }\n var newNode = createNode$1(nodeType);\n var openerEndPos = openerInl.sourcepos[1];\n var closerStartPos = closerInl.sourcepos[0];\n newNode.sourcepos = [\n [openerEndPos[0], openerEndPos[1] - useDelims + 1],\n [closerStartPos[0], closerStartPos[1] + useDelims - 1],\n ];\n openerInl.sourcepos[1][1] -= useDelims;\n closerInl.sourcepos[0][1] += useDelims;\n openerInl.literal = openerInl.literal.slice(useDelims);\n closerInl.literal = closerInl.literal.slice(useDelims);\n opener.numdelims -= useDelims;\n closer.numdelims -= useDelims;\n // remove used delimiters from stack elts and inlines\n var tmp = openerInl.next;\n var next = void 0;\n while (tmp && tmp !== closerInl) {\n next = tmp.next;\n tmp.unlink();\n newNode.appendChild(tmp);\n tmp = next;\n }\n // build custom inline node\n if (closercc === C_DOLLAR) {\n var textNode = newNode.firstChild;\n var literal = textNode.literal || '';\n var info = literal.split(/\\s/)[0];\n newNode.info = info;\n if (literal.length <= info.length) {\n textNode.unlink();\n }\n else {\n textNode.sourcepos[0][1] += info.length;\n textNode.literal = literal.replace(info + \" \", '');\n }\n }\n openerInl.insertAfter(newNode);\n // remove elts between opener and closer in delimiters stack\n this.removeDelimitersBetween(opener, closer);\n // if opener has 0 delims, remove it and the inline\n // if opener has 1 delims and character is tilde, remove delimiter only\n if (opener.numdelims <= emptyDelims) {\n if (opener.numdelims === 0) {\n openerInl.unlink();\n }\n this.removeDelimiter(opener);\n }\n // if closer has 0 delims, remove it and the inline\n // if closer has 1 delims and character is tilde, remove delimiter only\n if (closer.numdelims <= emptyDelims) {\n if (closer.numdelims === 0) {\n closerInl.unlink();\n }\n var tempstack = closer.next;\n this.removeDelimiter(closer);\n closer = tempstack;\n }\n }\n }\n else if (closercc === C_SINGLEQUOTE) {\n closer.node.literal = '\\u2019';\n if (openerFound) {\n opener.node.literal = '\\u2018';\n }\n closer = closer.next;\n }\n else if (closercc === C_DOUBLEQUOTE) {\n closer.node.literal = '\\u201D';\n if (openerFound) {\n opener.node.literal = '\\u201C';\n }\n closer = closer.next;\n }\n if (!openerFound) {\n // Set lower bound for future searches for openers:\n openersBottom[closercc][closerEmph ? oldCloser.origdelims % 3 : 0] = oldCloser.previous;\n if (!oldCloser.canOpen) {\n // We can remove a closer that can't be an opener,\n // once we've seen there's no matching opener:\n this.removeDelimiter(oldCloser);\n }\n }\n }\n }\n // remove all delimiters\n while (this.delimiters !== null && this.delimiters !== stackBottom) {\n this.removeDelimiter(this.delimiters);\n }\n };\n // Attempt to parse link title (sans quotes), returning the string\n // or null if no match.\n InlineParser.prototype.parseLinkTitle = function () {\n var title = this.match(reLinkTitle);\n if (title === null) {\n return null;\n }\n // chop off quotes from title and unescape:\n return unescapeString(title.substr(1, title.length - 2));\n };\n // Attempt to parse link destination, returning the string or null if no match.\n InlineParser.prototype.parseLinkDestination = function () {\n var res = this.match(reLinkDestinationBraces);\n if (res === null) {\n if (this.peek() === C_LESSTHAN$1) {\n return null;\n }\n // @TODO handrolled parser; res should be null or the string\n var savepos = this.pos;\n var openparens = 0;\n var c = void 0;\n while ((c = this.peek()) !== -1) {\n if (c === C_BACKSLASH && reEscapable.test(this.subject.charAt(this.pos + 1))) {\n this.pos += 1;\n if (this.peek() !== -1) {\n this.pos += 1;\n }\n }\n else if (c === C_OPEN_PAREN) {\n this.pos += 1;\n openparens += 1;\n }\n else if (c === C_CLOSE_PAREN) {\n if (openparens < 1) {\n break;\n }\n else {\n this.pos += 1;\n openparens -= 1;\n }\n }\n else if (reWhitespaceChar.exec(fromCodePoint$1(c)) !== null) {\n break;\n }\n else {\n this.pos += 1;\n }\n }\n if (this.pos === savepos && c !== C_CLOSE_PAREN) {\n return null;\n }\n if (openparens !== 0) {\n return null;\n }\n res = this.subject.substr(savepos, this.pos - savepos);\n return normalizeURI(unescapeString(res));\n } // chop off surrounding <..>:\n return normalizeURI(unescapeString(res.substr(1, res.length - 2)));\n };\n // Attempt to parse a link label, returning number of characters parsed.\n InlineParser.prototype.parseLinkLabel = function () {\n var m = this.match(reLinkLabel);\n if (m === null || m.length > 1001) {\n return 0;\n }\n return m.length;\n };\n // Add open bracket to delimiter stack and add a text node to block's children.\n InlineParser.prototype.parseOpenBracket = function (block) {\n var startpos = this.pos;\n this.pos += 1;\n var node = text$1('[', this.sourcepos(this.pos, this.pos));\n block.appendChild(node);\n // Add entry to stack for this opener\n this.addBracket(node, startpos, false);\n return true;\n };\n // IF next character is [, and ! delimiter to delimiter stack and\n // add a text node to block's children. Otherwise just add a text node.\n InlineParser.prototype.parseBang = function (block) {\n var startpos = this.pos;\n this.pos += 1;\n if (this.peek() === C_OPEN_BRACKET$1) {\n this.pos += 1;\n var node = text$1('![', this.sourcepos(this.pos - 1, this.pos));\n block.appendChild(node);\n // Add entry to stack for this opener\n this.addBracket(node, startpos + 1, true);\n }\n else {\n var node = text$1('!', this.sourcepos(this.pos, this.pos));\n block.appendChild(node);\n }\n return true;\n };\n // Try to match close bracket against an opening in the delimiter\n // stack. Add either a link or image, or a plain [ character,\n // to block's children. If there is a matching delimiter,\n // remove it from the delimiter stack.\n InlineParser.prototype.parseCloseBracket = function (block) {\n var dest = null;\n var title = null;\n var matched = false;\n this.pos += 1;\n var startpos = this.pos;\n // get last [ or ![\n var opener = this.brackets;\n if (opener === null) {\n // no matched opener, just return a literal\n block.appendChild(text$1(']', this.sourcepos(startpos, startpos)));\n return true;\n }\n if (!opener.active) {\n // no matched opener, just return a literal\n block.appendChild(text$1(']', this.sourcepos(startpos, startpos)));\n // take opener off brackets stack\n this.removeBracket();\n return true;\n }\n // If we got here, open is a potential opener\n var isImage = opener.image;\n // Check to see if we have a link/image\n var savepos = this.pos;\n // Inline link?\n if (this.peek() === C_OPEN_PAREN) {\n this.pos++;\n if (this.spnl() &&\n (dest = this.parseLinkDestination()) !== null &&\n this.spnl() &&\n // make sure there's a space before the title:\n ((reWhitespaceChar.test(this.subject.charAt(this.pos - 1)) &&\n (title = this.parseLinkTitle())) ||\n true) &&\n this.spnl() &&\n this.peek() === C_CLOSE_PAREN) {\n this.pos += 1;\n matched = true;\n }\n else {\n this.pos = savepos;\n }\n }\n var refLabel = '';\n if (!matched) {\n // Next, see if there's a link label\n var beforelabel = this.pos;\n var n = this.parseLinkLabel();\n if (n > 2) {\n refLabel = this.subject.slice(beforelabel, beforelabel + n);\n }\n else if (!opener.bracketAfter) {\n // Empty or missing second label means to use the first label as the reference.\n // The reference must not contain a bracket. If we know there's a bracket, we don't even bother checking it.\n refLabel = this.subject.slice(opener.index, startpos);\n }\n if (n === 0) {\n // If shortcut reference link, rewind before spaces we skipped.\n this.pos = savepos;\n }\n if (refLabel) {\n refLabel = normalizeReference(refLabel);\n // lookup rawlabel in refMap\n var link = this.refMap[refLabel];\n if (link) {\n dest = link.destination;\n title = link.title;\n matched = true;\n }\n }\n }\n if (matched) {\n var node = createNode$1(isImage ? 'image' : 'link');\n node.destination = dest;\n node.title = title || '';\n node.sourcepos = [opener.startpos, this.sourcepos(this.pos)];\n var tmp = opener.node.next;\n var next = void 0;\n while (tmp) {\n next = tmp.next;\n tmp.unlink();\n node.appendChild(tmp);\n tmp = next;\n }\n block.appendChild(node);\n this.processEmphasis(opener.previousDelimiter);\n this.removeBracket();\n opener.node.unlink();\n // We remove this bracket and processEmphasis will remove later delimiters.\n // Now, for a link, we also deactivate earlier link openers.\n // (no links in links)\n if (!isImage) {\n opener = this.brackets;\n while (opener !== null) {\n if (!opener.image) {\n opener.active = false; // deactivate this opener\n }\n opener = opener.previous;\n }\n }\n if (this.options.referenceDefinition) {\n this.refLinkCandidateMap[block.id] = { node: block, refLabel: refLabel };\n }\n return true;\n } // no match\n this.removeBracket(); // remove this opener from stack\n this.pos = startpos;\n block.appendChild(text$1(']', this.sourcepos(startpos, startpos)));\n if (this.options.referenceDefinition) {\n this.refLinkCandidateMap[block.id] = { node: block, refLabel: refLabel };\n }\n return true;\n };\n InlineParser.prototype.addBracket = function (node, index, image) {\n if (this.brackets !== null) {\n this.brackets.bracketAfter = true;\n }\n this.brackets = {\n node: node,\n startpos: this.sourcepos(index + (image ? 0 : 1)),\n previous: this.brackets,\n previousDelimiter: this.delimiters,\n index: index,\n image: image,\n active: true,\n };\n };\n InlineParser.prototype.removeBracket = function () {\n if (this.brackets) {\n this.brackets = this.brackets.previous;\n }\n };\n // Attempt to parse an entity.\n InlineParser.prototype.parseEntity = function (block) {\n var m;\n var startpos = this.pos + 1;\n if ((m = this.match(reEntityHere))) {\n block.appendChild(text$1(lib.decodeHTML(m), this.sourcepos(startpos, this.pos)));\n return true;\n }\n return false;\n };\n // Parse a run of ordinary characters, or a single character with\n // a special meaning in markdown, as a plain string.\n InlineParser.prototype.parseString = function (block) {\n var m;\n var startpos = this.pos + 1;\n if ((m = this.match(reMain))) {\n if (this.options.smart) {\n var lit = m.replace(reEllipses, '\\u2026').replace(reDash, function (chars) {\n var enCount = 0;\n var emCount = 0;\n if (chars.length % 3 === 0) {\n // If divisible by 3, use all em dashes\n emCount = chars.length / 3;\n }\n else if (chars.length % 2 === 0) {\n // If divisible by 2, use all en dashes\n enCount = chars.length / 2;\n }\n else if (chars.length % 3 === 2) {\n // If 2 extra dashes, use en dash for last 2; em dashes for rest\n enCount = 1;\n emCount = (chars.length - 2) / 3;\n }\n else {\n // Use en dashes for last 4 hyphens; em dashes for rest\n enCount = 2;\n emCount = (chars.length - 4) / 3;\n }\n return repeat('\\u2014', emCount) + repeat('\\u2013', enCount);\n });\n block.appendChild(text$1(lit, this.sourcepos(startpos, this.pos)));\n }\n else {\n var node = text$1(m, this.sourcepos(startpos, this.pos));\n block.appendChild(node);\n }\n return true;\n }\n return false;\n };\n // Parse a newline. If it was preceded by two spaces, return a hard\n // line break; otherwise a soft line break.\n InlineParser.prototype.parseNewline = function (block) {\n this.pos += 1; // assume we're at a \\n\n // check previous node for trailing spaces\n var lastc = block.lastChild;\n if (lastc && lastc.type === 'text' && lastc.literal[lastc.literal.length - 1] === ' ') {\n var hardbreak = lastc.literal[lastc.literal.length - 2] === ' ';\n var litLen = lastc.literal.length;\n lastc.literal = lastc.literal.replace(reFinalSpace, '');\n var finalSpaceLen = litLen - lastc.literal.length;\n lastc.sourcepos[1][1] -= finalSpaceLen;\n block.appendChild(createNode$1(hardbreak ? 'linebreak' : 'softbreak', this.sourcepos(this.pos - finalSpaceLen, this.pos)));\n }\n else {\n block.appendChild(createNode$1('softbreak', this.sourcepos(this.pos, this.pos)));\n }\n this.nextLine();\n this.match(reInitialSpace); // gobble leading spaces in next line\n return true;\n };\n // Attempt to parse a link reference, modifying refmap.\n InlineParser.prototype.parseReference = function (block, refMap) {\n if (!this.options.referenceDefinition) {\n return 0;\n }\n this.subject = block.stringContent;\n this.pos = 0;\n var title = null;\n var startpos = this.pos;\n // label:\n var matchChars = this.parseLinkLabel();\n if (matchChars === 0) {\n return 0;\n }\n var rawlabel = this.subject.substr(0, matchChars);\n // colon:\n if (this.peek() === C_COLON) {\n this.pos++;\n }\n else {\n this.pos = startpos;\n return 0;\n }\n // link url\n this.spnl();\n var dest = this.parseLinkDestination();\n if (dest === null) {\n this.pos = startpos;\n return 0;\n }\n var beforetitle = this.pos;\n this.spnl();\n if (this.pos !== beforetitle) {\n title = this.parseLinkTitle();\n }\n if (title === null) {\n title = '';\n // rewind before spaces\n this.pos = beforetitle;\n }\n // make sure we're at line end:\n var atLineEnd = true;\n if (this.match(reSpaceAtEndOfLine) === null) {\n if (title === '') {\n atLineEnd = false;\n }\n else {\n // the potential title we found is not at the line end,\n // but it could still be a legal link reference if we\n // discard the title\n title = '';\n // rewind before spaces\n this.pos = beforetitle;\n // and instead check if the link URL is at the line end\n atLineEnd = this.match(reSpaceAtEndOfLine) !== null;\n }\n }\n if (!atLineEnd) {\n this.pos = startpos;\n return 0;\n }\n var normalLabel = normalizeReference(rawlabel);\n if (normalLabel === '') {\n // label must contain non-whitespace characters\n this.pos = startpos;\n return 0;\n }\n var sourcepos = this.getReferenceDefSourcepos(block);\n block.sourcepos[0][0] = sourcepos[1][0] + 1;\n var node = createNode$1('refDef', sourcepos);\n node.title = title;\n node.dest = dest;\n node.label = normalLabel;\n block.insertBefore(node);\n if (!refMap[normalLabel]) {\n refMap[normalLabel] = createRefDefState(node);\n }\n else {\n this.refDefCandidateMap[node.id] = node;\n }\n return this.pos - startpos;\n };\n InlineParser.prototype.mergeTextNodes = function (walker) {\n var event;\n var textNodes = [];\n while ((event = walker.next())) {\n var entering = event.entering, node = event.node;\n if (entering && node.type === 'text') {\n textNodes.push(node);\n }\n else if (textNodes.length === 1) {\n textNodes = [];\n }\n else if (textNodes.length > 1) {\n var firstNode = textNodes[0];\n var lastNode = textNodes[textNodes.length - 1];\n if (firstNode.sourcepos && lastNode.sourcepos) {\n firstNode.sourcepos[1] = lastNode.sourcepos[1];\n }\n firstNode.next = lastNode.next;\n if (firstNode.next) {\n firstNode.next.prev = firstNode;\n }\n for (var i = 1; i < textNodes.length; i += 1) {\n firstNode.literal += textNodes[i].literal;\n textNodes[i].unlink();\n }\n textNodes = [];\n }\n }\n };\n InlineParser.prototype.getReferenceDefSourcepos = function (block) {\n var lines = block.stringContent.split(/\\n|\\r\\n/);\n var passedUrlLine = false;\n var quotationCount = 0;\n var lastLineOffset = { line: 0, ch: 0 };\n for (var i = 0; i < lines.length; i += 1) {\n var line = lines[i];\n if (reWhitespaceChar.test(line)) {\n break;\n }\n if (/\\:/.test(line) && quotationCount === 0) {\n if (passedUrlLine) {\n break;\n }\n var lineOffset = line.indexOf(':') === line.length - 1 ? i + 1 : i;\n lastLineOffset = { line: lineOffset, ch: lines[lineOffset].length };\n passedUrlLine = true;\n }\n // should consider extendable title\n var matched = line.match(/'|\"/g);\n if (matched) {\n quotationCount += matched.length;\n }\n if (quotationCount === 2) {\n lastLineOffset = { line: i, ch: line.length };\n break;\n }\n }\n return [\n [block.sourcepos[0][0], block.sourcepos[0][1]],\n [block.sourcepos[0][0] + lastLineOffset.line, lastLineOffset.ch],\n ];\n };\n // Parse the next inline element in subject, advancing subject position.\n // On success, add the result to block's children and return true.\n // On failure, return false.\n InlineParser.prototype.parseInline = function (block) {\n var _a;\n var res = false;\n var c = this.peek();\n if (c === -1) {\n return false;\n }\n switch (c) {\n case C_NEWLINE:\n res = this.parseNewline(block);\n break;\n case C_BACKSLASH:\n res = this.parseBackslash(block);\n break;\n case C_BACKTICK:\n res = this.parseBackticks(block);\n break;\n case C_ASTERISK:\n case C_UNDERSCORE:\n case C_TILDE:\n case C_DOLLAR:\n res = this.handleDelim(c, block);\n break;\n case C_SINGLEQUOTE:\n case C_DOUBLEQUOTE:\n res = !!((_a = this.options) === null || _a === void 0 ? void 0 : _a.smart) && this.handleDelim(c, block);\n break;\n case C_OPEN_BRACKET$1:\n res = this.parseOpenBracket(block);\n break;\n case C_BANG:\n res = this.parseBang(block);\n break;\n case C_CLOSE_BRACKET:\n res = this.parseCloseBracket(block);\n break;\n case C_LESSTHAN$1:\n res = this.parseAutolink(block) || this.parseHtmlTag(block);\n break;\n case C_AMPERSAND:\n if (!block.disabledEntityParse) {\n res = this.parseEntity(block);\n }\n break;\n default:\n res = this.parseString(block);\n break;\n }\n if (!res) {\n this.pos += 1;\n block.appendChild(text$1(fromCodePoint$1(c), this.sourcepos(this.pos, this.pos + 1)));\n }\n return true;\n };\n // Parse string content in block into inline children,\n // using refmap to resolve references.\n InlineParser.prototype.parse = function (block) {\n this.subject = block.stringContent.trim();\n this.pos = 0;\n this.delimiters = null;\n this.brackets = null;\n this.lineOffsets = block.lineOffsets || [0];\n this.lineIdx = 0;\n this.linePosOffset = 0;\n this.lineStartNum = block.sourcepos[0][0];\n if (isHeading(block)) {\n this.lineOffsets[0] += block.level + 1;\n }\n while (this.parseInline(block)) { }\n block.stringContent = null; // allow raw string to be garbage collected\n this.processEmphasis(null);\n this.mergeTextNodes(block.walker());\n var _a = this.options, extendedAutolinks = _a.extendedAutolinks, customParser = _a.customParser;\n if (extendedAutolinks) {\n convertExtAutoLinks(block.walker(), extendedAutolinks);\n }\n if (customParser && block.firstChild) {\n var event_1;\n var walker = block.firstChild.walker();\n while ((event_1 = walker.next())) {\n var node = event_1.node, entering = event_1.entering;\n if (customParser[node.type]) {\n customParser[node.type](node, { entering: entering, options: this.options });\n }\n }\n }\n };\n return InlineParser;\n}());\n\nvar reTaskListItemMarker = /^\\[([ \\txX])\\][ \\t]+/;\n// finalize for block handler\nfunction taskListItemFinalize(_, block) {\n if (block.firstChild && block.firstChild.type === 'paragraph') {\n var p = block.firstChild;\n var m = p.stringContent.match(reTaskListItemMarker);\n if (m) {\n var mLen = m[0].length;\n p.stringContent = p.stringContent.substring(mLen - 1);\n p.sourcepos[0][1] += mLen;\n p.lineOffsets[0] += mLen;\n block.listData.task = true;\n block.listData.checked = /[xX]/.test(m[1]);\n }\n }\n}\n\nvar table = {\n continue: function () {\n return 0 /* Go */;\n },\n finalize: function () { },\n canContain: function (t) {\n return t === 'tableHead' || t === 'tableBody';\n },\n acceptsLines: false,\n};\nvar tableBody$1 = {\n continue: function () {\n return 0 /* Go */;\n },\n finalize: function () { },\n canContain: function (t) {\n return t === 'tableRow';\n },\n acceptsLines: false,\n};\nvar tableHead$1 = {\n continue: function () {\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function (t) {\n return t === 'tableRow' || t === 'tableDelimRow';\n },\n acceptsLines: false,\n};\nvar tableDelimRow = {\n continue: function () {\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function (t) {\n return t === 'tableDelimCell';\n },\n acceptsLines: false,\n};\nvar tableDelimCell = {\n continue: function () {\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function () {\n return false;\n },\n acceptsLines: false,\n};\nvar tableRow = {\n continue: function () {\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function (t) {\n return t === 'tableCell';\n },\n acceptsLines: false,\n};\nvar tableCell = {\n continue: function () {\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function () {\n return false;\n },\n acceptsLines: false,\n};\n\nvar CODE_INDENT = 4;\nvar C_TAB = 9;\nvar C_GREATERTHAN = 62;\nvar C_LESSTHAN = 60;\nvar C_SPACE = 32;\nvar C_OPEN_BRACKET = 91;\nvar reNonSpace = /[^ \\t\\f\\v\\r\\n]/;\nvar reClosingCodeFence = /^(?:`{3,}|~{3,})(?= *$)/;\n// Returns true if block ends with a blank line, descending if needed\n// into lists and sublists.\nfunction endsWithBlankLine(block) {\n var curBlock = block;\n while (curBlock) {\n if (curBlock.lastLineBlank) {\n return true;\n }\n var t = curBlock.type;\n if (!curBlock.lastLineChecked && (t === 'list' || t === 'item')) {\n curBlock.lastLineChecked = true;\n curBlock = curBlock.lastChild;\n }\n else {\n curBlock.lastLineChecked = true;\n break;\n }\n }\n return false;\n}\nfunction peek(ln, pos) {\n if (pos < ln.length) {\n return ln.charCodeAt(pos);\n }\n return -1;\n}\n// Returns true if string contains only space characters.\nfunction isBlank(s) {\n return !reNonSpace.test(s);\n}\nfunction isSpaceOrTab(c) {\n return c === C_SPACE || c === C_TAB;\n}\n\nvar reClosingCustomBlock = /^\\$\\$$/;\nvar customBlock$1 = {\n continue: function (parser, container) {\n var line = parser.currentLine;\n var match = line.match(reClosingCustomBlock);\n if (match) {\n // closing custom block\n parser.lastLineLength = match[0].length;\n parser.finalize(container, parser.lineNumber);\n return 2 /* Finished */;\n }\n // skip optional spaces of custom block offset\n var i = container.offset;\n while (i > 0 && isSpaceOrTab(peek(line, parser.offset))) {\n parser.advanceOffset(1, true);\n i--;\n }\n return 0 /* Go */;\n },\n finalize: function (_, block) {\n if (block.stringContent === null) {\n return;\n }\n // first line becomes info string\n var content = block.stringContent;\n var newlinePos = content.indexOf('\\n');\n var firstLine = content.slice(0, newlinePos);\n var rest = content.slice(newlinePos + 1);\n var infoString = firstLine.match(/^(\\s*)(.*)/);\n block.info = unescapeString(infoString[2].trim());\n block.literal = rest;\n block.stringContent = null;\n },\n canContain: function () {\n return false;\n },\n acceptsLines: true,\n};\n\nvar noop = {\n continue: function () {\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function () {\n return false;\n },\n acceptsLines: true,\n};\nvar document$1 = {\n continue: function () {\n return 0 /* Go */;\n },\n finalize: function () { },\n canContain: function (t) {\n return t !== 'item';\n },\n acceptsLines: false,\n};\nvar list = {\n continue: function () {\n return 0 /* Go */;\n },\n finalize: function (_, block) {\n var item = block.firstChild;\n while (item) {\n // check for non-final list item ending with blank line:\n if (endsWithBlankLine(item) && item.next) {\n block.listData.tight = false;\n break;\n }\n // recurse into children of list item, to see if there are\n // spaces between any of them:\n var subitem = item.firstChild;\n while (subitem) {\n if (endsWithBlankLine(subitem) && (item.next || subitem.next)) {\n block.listData.tight = false;\n break;\n }\n subitem = subitem.next;\n }\n item = item.next;\n }\n },\n canContain: function (t) {\n return t === 'item';\n },\n acceptsLines: false,\n};\nvar blockQuote$1 = {\n continue: function (parser) {\n var ln = parser.currentLine;\n if (!parser.indented && peek(ln, parser.nextNonspace) === C_GREATERTHAN) {\n parser.advanceNextNonspace();\n parser.advanceOffset(1, false);\n if (isSpaceOrTab(peek(ln, parser.offset))) {\n parser.advanceOffset(1, true);\n }\n }\n else {\n return 1 /* Stop */;\n }\n return 0 /* Go */;\n },\n finalize: function () { },\n canContain: function (t) {\n return t !== 'item';\n },\n acceptsLines: false,\n};\nvar item = {\n continue: function (parser, container) {\n if (parser.blank) {\n if (container.firstChild === null) {\n // Blank line after empty list item\n return 1 /* Stop */;\n }\n parser.advanceNextNonspace();\n }\n else if (parser.indent >= container.listData.markerOffset + container.listData.padding) {\n parser.advanceOffset(container.listData.markerOffset + container.listData.padding, true);\n }\n else {\n return 1 /* Stop */;\n }\n return 0 /* Go */;\n },\n finalize: taskListItemFinalize,\n canContain: function (t) {\n return t !== 'item';\n },\n acceptsLines: false,\n};\nvar heading = {\n continue: function () {\n // a heading can never container > 1 line, so fail to match:\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function () {\n return false;\n },\n acceptsLines: false,\n};\nvar thematicBreak$1 = {\n continue: function () {\n // a thematic break can never container > 1 line, so fail to match:\n return 1 /* Stop */;\n },\n finalize: function () { },\n canContain: function () {\n return false;\n },\n acceptsLines: false,\n};\nvar codeBlock = {\n continue: function (parser, container) {\n var ln = parser.currentLine;\n var indent = parser.indent;\n if (container.isFenced) {\n // fenced\n var match = indent <= 3 &&\n ln.charAt(parser.nextNonspace) === container.fenceChar &&\n ln.slice(parser.nextNonspace).match(reClosingCodeFence);\n if (match && match[0].length >= container.fenceLength) {\n // closing fence - we're at end of line, so we can return\n parser.lastLineLength = parser.offset + indent + match[0].length;\n parser.finalize(container, parser.lineNumber);\n return 2 /* Finished */;\n }\n // skip optional spaces of fence offset\n var i = container.fenceOffset;\n while (i > 0 && isSpaceOrTab(peek(ln, parser.offset))) {\n parser.advanceOffset(1, true);\n i--;\n }\n }\n else {\n // indented\n if (indent >= CODE_INDENT) {\n parser.advanceOffset(CODE_INDENT, true);\n }\n else if (parser.blank) {\n parser.advanceNextNonspace();\n }\n else {\n return 1 /* Stop */;\n }\n }\n return 0 /* Go */;\n },\n finalize: function (_, block) {\n var _a;\n if (block.stringContent === null) {\n return;\n }\n if (block.isFenced) {\n // fenced\n // first line becomes info string\n var content = block.stringContent;\n var newlinePos = content.indexOf('\\n');\n var firstLine = content.slice(0, newlinePos);\n var rest = content.slice(newlinePos + 1);\n var infoString = firstLine.match(/^(\\s*)(.*)/);\n block.infoPadding = infoString[1].length;\n block.info = unescapeString(infoString[2].trim());\n block.literal = rest;\n }\n else {\n // indented\n block.literal = (_a = block.stringContent) === null || _a === void 0 ? void 0 : _a.replace(/(\\n *)+$/, '\\n');\n }\n block.stringContent = null; // allow GC\n },\n canContain: function () {\n return false;\n },\n acceptsLines: true,\n};\nvar htmlBlock$1 = {\n continue: function (parser, container) {\n return parser.blank && (container.htmlBlockType === 6 || container.htmlBlockType === 7)\n ? 1 /* Stop */\n : 0 /* Go */;\n },\n finalize: function (_, block) {\n var _a;\n block.literal = ((_a = block.stringContent) === null || _a === void 0 ? void 0 : _a.replace(/(\\n *)+$/, '')) || null;\n block.stringContent = null; // allow GC\n },\n canContain: function () {\n return false;\n },\n acceptsLines: true,\n};\nvar paragraph = {\n continue: function (parser) {\n return parser.blank ? 1 /* Stop */ : 0 /* Go */;\n },\n finalize: function (parser, block) {\n if (block.stringContent === null) {\n return;\n }\n var pos;\n var hasReferenceDefs = false;\n // try parsing the beginning as link reference definitions:\n while (peek(block.stringContent, 0) === C_OPEN_BRACKET &&\n (pos = parser.inlineParser.parseReference(block, parser.refMap))) {\n block.stringContent = block.stringContent.slice(pos);\n hasReferenceDefs = true;\n }\n if (hasReferenceDefs && isBlank(block.stringContent)) {\n block.unlink();\n }\n },\n canContain: function () {\n return false;\n },\n acceptsLines: true,\n};\nvar refDef = noop;\nvar frontMatter$2 = noop;\nvar blockHandlers = {\n document: document$1,\n list: list,\n blockQuote: blockQuote$1,\n item: item,\n heading: heading,\n thematicBreak: thematicBreak$1,\n codeBlock: codeBlock,\n htmlBlock: htmlBlock$1,\n paragraph: paragraph,\n table: table,\n tableBody: tableBody$1,\n tableHead: tableHead$1,\n tableRow: tableRow,\n tableCell: tableCell,\n tableDelimRow: tableDelimRow,\n tableDelimCell: tableDelimCell,\n refDef: refDef,\n customBlock: customBlock$1,\n frontMatter: frontMatter$2,\n};\n\nfunction parseRowContent(content) {\n var startIdx = 0;\n var offset = 0;\n var cells = [];\n for (var i = 0; i < content.length; i += 1) {\n if (content[i] === '|' && content[i - 1] !== '\\\\') {\n var cell = content.substring(startIdx, i);\n if (startIdx === 0 && isEmpty(cell)) {\n offset = i + 1;\n }\n else {\n cells.push(cell);\n }\n startIdx = i + 1;\n }\n }\n if (startIdx < content.length) {\n var cell = content.substring(startIdx, content.length);\n if (!isEmpty(cell)) {\n cells.push(cell);\n }\n }\n return [offset, cells];\n}\nfunction generateTableCells(cellType, contents, lineNum, chPos) {\n var cells = [];\n for (var _i = 0, contents_1 = contents; _i < contents_1.length; _i++) {\n var content = contents_1[_i];\n var preSpaces = content.match(/^[ \\t]+/);\n var paddingLeft = preSpaces ? preSpaces[0].length : 0;\n var paddingRight = void 0, trimmed = void 0;\n if (paddingLeft === content.length) {\n paddingLeft = 0;\n paddingRight = 0;\n trimmed = '';\n }\n else {\n var postSpaces = content.match(/[ \\t]+$/);\n paddingRight = postSpaces ? postSpaces[0].length : 0;\n trimmed = content.slice(paddingLeft, content.length - paddingRight);\n }\n var chPosStart = chPos + paddingLeft;\n var tableCell = createNode$1(cellType, [\n [lineNum, chPos],\n [lineNum, chPos + content.length - 1],\n ]);\n tableCell.stringContent = trimmed.replace(/\\\\\\|/g, '|'); // replace esacped pipe(\\|)\n tableCell.startIdx = cells.length;\n tableCell.endIdx = cells.length;\n tableCell.lineOffsets = [chPosStart - 1];\n tableCell.paddingLeft = paddingLeft;\n tableCell.paddingRight = paddingRight;\n cells.push(tableCell);\n chPos += content.length + 1;\n }\n return cells;\n}\nfunction getColumnFromDelimCell(cellNode) {\n var align = null;\n var content = cellNode.stringContent;\n var firstCh = content[0];\n var lastCh = content[content.length - 1];\n if (lastCh === ':') {\n align = firstCh === ':' ? 'center' : 'right';\n }\n else if (firstCh === ':') {\n align = 'left';\n }\n return { align: align };\n}\nvar tableHead = function (parser, container) {\n var stringContent = container.stringContent;\n if (container.type === 'paragraph' && !parser.indented && !parser.blank) {\n var lastNewLineIdx = stringContent.length - 1;\n var lastLineStartIdx = stringContent.lastIndexOf('\\n', lastNewLineIdx - 1) + 1;\n var headerContent = stringContent.slice(lastLineStartIdx, lastNewLineIdx);\n var delimContent = parser.currentLine.slice(parser.nextNonspace);\n var _a = parseRowContent(headerContent), headerOffset = _a[0], headerCells = _a[1];\n var _b = parseRowContent(delimContent), delimOffset = _b[0], delimCells = _b[1];\n var reValidDelimCell_1 = /^[ \\t]*:?-+:?[ \\t]*$/;\n if (\n // not checking if the number of header cells and delimiter cells are the same\n // to consider the case of merged-column (via plugin)\n !headerCells.length ||\n !delimCells.length ||\n delimCells.some(function (cell) { return !reValidDelimCell_1.test(cell); }) ||\n // to prevent to regard setTextHeading as tabel delim cell with 'disallowDeepHeading' option\n (delimCells.length === 1 && delimContent.indexOf('|') !== 0)) {\n return 0 /* None */;\n }\n var lineOffsets = container.lineOffsets;\n var firstLineNum = parser.lineNumber - 1;\n var firstLineStart = last(lineOffsets) + 1;\n var table = createNode$1('table', [\n [firstLineNum, firstLineStart],\n [parser.lineNumber, parser.offset],\n ]);\n // eslint-disable-next-line arrow-body-style\n table.columns = delimCells.map(function () { return ({ align: null }); });\n container.insertAfter(table);\n if (lineOffsets.length === 1) {\n container.unlink();\n }\n else {\n container.stringContent = stringContent.slice(0, lastLineStartIdx);\n var paraLastLineStartIdx = stringContent.lastIndexOf('\\n', lastLineStartIdx - 2) + 1;\n var paraLastLineLen = lastLineStartIdx - paraLastLineStartIdx - 1;\n parser.lastLineLength = lineOffsets[lineOffsets.length - 2] + paraLastLineLen;\n parser.finalize(container, firstLineNum - 1);\n }\n parser.advanceOffset(parser.currentLine.length - parser.offset, false);\n var tableHead_1 = createNode$1('tableHead', [\n [firstLineNum, firstLineStart],\n [parser.lineNumber, parser.offset],\n ]);\n table.appendChild(tableHead_1);\n var tableHeadRow_1 = createNode$1('tableRow', [\n [firstLineNum, firstLineStart],\n [firstLineNum, firstLineStart + headerContent.length - 1],\n ]);\n var tableDelimRow_1 = createNode$1('tableDelimRow', [\n [parser.lineNumber, parser.nextNonspace + 1],\n [parser.lineNumber, parser.offset],\n ]);\n tableHead_1.appendChild(tableHeadRow_1);\n tableHead_1.appendChild(tableDelimRow_1);\n generateTableCells('tableCell', headerCells, firstLineNum, firstLineStart + headerOffset).forEach(function (cellNode) {\n tableHeadRow_1.appendChild(cellNode);\n });\n var delimCellNodes = generateTableCells('tableDelimCell', delimCells, parser.lineNumber, parser.nextNonspace + 1 + delimOffset);\n delimCellNodes.forEach(function (cellNode) {\n tableDelimRow_1.appendChild(cellNode);\n });\n table.columns = delimCellNodes.map(getColumnFromDelimCell);\n parser.tip = table;\n return 2 /* Leaf */;\n }\n return 0 /* None */;\n};\nvar tableBody = function (parser, container) {\n if ((container.type !== 'table' && container.type !== 'tableBody') ||\n (!parser.blank && parser.currentLine.indexOf('|') === -1)) {\n return 0 /* None */;\n }\n parser.advanceOffset(parser.currentLine.length - parser.offset, false);\n if (parser.blank) {\n var table_1 = container;\n if (container.type === 'tableBody') {\n table_1 = container.parent;\n parser.finalize(container, parser.lineNumber - 1);\n }\n parser.finalize(table_1, parser.lineNumber - 1);\n return 0 /* None */;\n }\n var tableBody = container;\n if (container.type === 'table') {\n tableBody = parser.addChild('tableBody', parser.nextNonspace);\n tableBody.stringContent = null;\n }\n var tableRow = createNode$1('tableRow', [\n [parser.lineNumber, parser.nextNonspace + 1],\n [parser.lineNumber, parser.currentLine.length],\n ]);\n tableBody.appendChild(tableRow);\n var table = tableBody.parent;\n var content = parser.currentLine.slice(parser.nextNonspace);\n var _a = parseRowContent(content), offset = _a[0], cellContents = _a[1];\n generateTableCells('tableCell', cellContents, parser.lineNumber, parser.nextNonspace + 1 + offset).forEach(function (cellNode, idx) {\n if (idx >= table.columns.length) {\n cellNode.ignored = true;\n }\n tableRow.appendChild(cellNode);\n });\n return 2 /* Leaf */;\n};\n\nvar reCustomBlock = /^(\\$\\$)(\\s*[a-zA-Z])+/;\nvar reCanBeCustomInline = /^(\\$\\$)(\\s*[a-zA-Z])+.*(\\$\\$)/;\nvar customBlock = function (parser) {\n var match;\n if (!parser.indented &&\n !reCanBeCustomInline.test(parser.currentLine) &&\n (match = parser.currentLine.match(reCustomBlock))) {\n var syntaxLength = match[1].length;\n parser.closeUnmatchedBlocks();\n var container = parser.addChild('customBlock', parser.nextNonspace);\n container.syntaxLength = syntaxLength;\n container.offset = parser.indent;\n parser.advanceNextNonspace();\n parser.advanceOffset(syntaxLength, false);\n return 2 /* Leaf */;\n }\n return 0 /* None */;\n};\n\nvar reCodeFence = /^`{3,}(?!.*`)|^~{3,}/;\nvar reHtmlBlockOpen = [\n /./,\n /^<(?:script|pre|style)(?:\\s|>|$)/i,\n /^/,\n /\\?>/,\n />/,\n /\\]\\]>/,\n];\nvar reMaybeSpecial = /^[#`~*+_=<>0-9-;$]/;\nvar reLineEnding$1 = /\\r\\n|\\n|\\r/;\nfunction document$2() {\n return createNode$1('document', [\n [1, 1],\n [0, 0],\n ]);\n}\nvar defaultOptions$1 = {\n smart: false,\n tagFilter: false,\n extendedAutolinks: false,\n disallowedHtmlBlockTags: [],\n referenceDefinition: false,\n disallowDeepHeading: false,\n customParser: null,\n frontMatter: false,\n};\nvar Parser = /** @class */ (function () {\n function Parser(options) {\n this.options = __assign(__assign({}, defaultOptions$1), options);\n this.doc = document$2();\n this.tip = this.doc;\n this.oldtip = this.doc;\n this.lineNumber = 0;\n this.offset = 0;\n this.column = 0;\n this.nextNonspace = 0;\n this.nextNonspaceColumn = 0;\n this.indent = 0;\n this.currentLine = '';\n this.indented = false;\n this.blank = false;\n this.partiallyConsumedTab = false;\n this.allClosed = true;\n this.lastMatchedContainer = this.doc;\n this.refMap = {};\n this.refLinkCandidateMap = {};\n this.refDefCandidateMap = {};\n this.lastLineLength = 0;\n this.lines = [];\n if (this.options.frontMatter) {\n blockHandlers.frontMatter = frontMatter;\n blockStarts.unshift(frontMatter$1);\n }\n this.inlineParser = new InlineParser(this.options);\n }\n Parser.prototype.advanceOffset = function (count, columns) {\n if (columns === void 0) { columns = false; }\n var currentLine = this.currentLine;\n var charsToTab, charsToAdvance;\n var c;\n while (count > 0 && (c = currentLine[this.offset])) {\n if (c === '\\t') {\n charsToTab = 4 - (this.column % 4);\n if (columns) {\n this.partiallyConsumedTab = charsToTab > count;\n charsToAdvance = charsToTab > count ? count : charsToTab;\n this.column += charsToAdvance;\n this.offset += this.partiallyConsumedTab ? 0 : 1;\n count -= charsToAdvance;\n }\n else {\n this.partiallyConsumedTab = false;\n this.column += charsToTab;\n this.offset += 1;\n count -= 1;\n }\n }\n else {\n this.partiallyConsumedTab = false;\n this.offset += 1;\n this.column += 1; // assume ascii; block starts are ascii\n count -= 1;\n }\n }\n };\n Parser.prototype.advanceNextNonspace = function () {\n this.offset = this.nextNonspace;\n this.column = this.nextNonspaceColumn;\n this.partiallyConsumedTab = false;\n };\n Parser.prototype.findNextNonspace = function () {\n var currentLine = this.currentLine;\n var i = this.offset;\n var cols = this.column;\n var c;\n while ((c = currentLine.charAt(i)) !== '') {\n if (c === ' ') {\n i++;\n cols++;\n }\n else if (c === '\\t') {\n i++;\n cols += 4 - (cols % 4);\n }\n else {\n break;\n }\n }\n this.blank = c === '\\n' || c === '\\r' || c === '';\n this.nextNonspace = i;\n this.nextNonspaceColumn = cols;\n this.indent = this.nextNonspaceColumn - this.column;\n this.indented = this.indent >= CODE_INDENT;\n };\n // Add a line to the block at the tip. We assume the tip\n // can accept lines -- that check should be done before calling this.\n Parser.prototype.addLine = function () {\n if (this.partiallyConsumedTab) {\n this.offset += 1; // skip over tab\n // add space characters:\n var charsToTab = 4 - (this.column % 4);\n this.tip.stringContent += repeat(' ', charsToTab);\n }\n if (this.tip.lineOffsets) {\n this.tip.lineOffsets.push(this.offset);\n }\n else {\n this.tip.lineOffsets = [this.offset];\n }\n this.tip.stringContent += this.currentLine.slice(this.offset) + \"\\n\";\n };\n // Add block of type tag as a child of the tip. If the tip can't\n // accept children, close and finalize it and try its parent,\n // and so on til we find a block that can accept children.\n Parser.prototype.addChild = function (tag, offset) {\n while (!blockHandlers[this.tip.type].canContain(tag)) {\n this.finalize(this.tip, this.lineNumber - 1);\n }\n var columnNumber = offset + 1; // offset 0 = column 1\n var newBlock = createNode$1(tag, [\n [this.lineNumber, columnNumber],\n [0, 0],\n ]);\n newBlock.stringContent = '';\n this.tip.appendChild(newBlock);\n this.tip = newBlock;\n return newBlock;\n };\n // Finalize and close any unmatched blocks.\n Parser.prototype.closeUnmatchedBlocks = function () {\n if (!this.allClosed) {\n // finalize any blocks not matched\n while (this.oldtip !== this.lastMatchedContainer) {\n var parent_1 = this.oldtip.parent;\n this.finalize(this.oldtip, this.lineNumber - 1);\n this.oldtip = parent_1;\n }\n this.allClosed = true;\n }\n };\n // Finalize a block. Close it and do any necessary postprocessing,\n // e.g. creating stringContent from strings, setting the 'tight'\n // or 'loose' status of a list, and parsing the beginnings\n // of paragraphs for reference definitions. Reset the tip to the\n // parent of the closed block.\n Parser.prototype.finalize = function (block, lineNumber) {\n var above = block.parent;\n block.open = false;\n block.sourcepos[1] = [lineNumber, this.lastLineLength];\n blockHandlers[block.type].finalize(this, block);\n this.tip = above;\n };\n // Walk through a block & children recursively, parsing string content\n // into inline content where appropriate.\n Parser.prototype.processInlines = function (block) {\n var event;\n var customParser = this.options.customParser;\n var walker = block.walker();\n this.inlineParser.refMap = this.refMap;\n this.inlineParser.refLinkCandidateMap = this.refLinkCandidateMap;\n this.inlineParser.refDefCandidateMap = this.refDefCandidateMap;\n this.inlineParser.options = this.options;\n while ((event = walker.next())) {\n var node = event.node, entering = event.entering;\n var t = node.type;\n if (customParser && customParser[t]) {\n customParser[t](node, { entering: entering, options: this.options });\n }\n if (!entering &&\n (t === 'paragraph' ||\n t === 'heading' ||\n (t === 'tableCell' && !node.ignored))) {\n this.inlineParser.parse(node);\n }\n }\n };\n // Analyze a line of text and update the document appropriately.\n // We parse markdown text by calling this on each line of input,\n // then finalizing the document.\n Parser.prototype.incorporateLine = function (ln) {\n var container = this.doc;\n this.oldtip = this.tip;\n this.offset = 0;\n this.column = 0;\n this.blank = false;\n this.partiallyConsumedTab = false;\n this.lineNumber += 1;\n // replace NUL characters for security\n if (ln.indexOf('\\u0000') !== -1) {\n ln = ln.replace(/\\0/g, '\\uFFFD');\n }\n this.currentLine = ln;\n // For each containing block, try to parse the associated line start.\n // Bail out on failure: container will point to the last matching block.\n // Set allMatched to false if not all containers match.\n var allMatched = true;\n var lastChild;\n while ((lastChild = container.lastChild) && lastChild.open) {\n container = lastChild;\n this.findNextNonspace();\n switch (blockHandlers[container.type]['continue'](this, container)) {\n case 0 /* Go */: // we've matched, keep going\n break;\n case 1 /* Stop */: // we've failed to match a block\n allMatched = false;\n break;\n case 2 /* Finished */: // we've hit end of line for fenced code close and can return\n this.lastLineLength = ln.length;\n return;\n default:\n throw new Error('continue returned illegal value, must be 0, 1, or 2');\n }\n if (!allMatched) {\n container = container.parent; // back up to last matching block\n break;\n }\n }\n this.allClosed = container === this.oldtip;\n this.lastMatchedContainer = container;\n var matchedLeaf = container.type !== 'paragraph' && blockHandlers[container.type].acceptsLines;\n var blockStartsLen = blockStarts.length;\n // Unless last matched container is a code block, try new container starts,\n // adding children to the last matched container:\n while (!matchedLeaf) {\n this.findNextNonspace();\n // this is a little performance optimization:\n if (container.type !== 'table' &&\n container.type !== 'tableBody' &&\n container.type !== 'paragraph' &&\n !this.indented &&\n !reMaybeSpecial.test(ln.slice(this.nextNonspace))) {\n this.advanceNextNonspace();\n break;\n }\n var i = 0;\n while (i < blockStartsLen) {\n var res = blockStarts[i](this, container);\n if (res === 1 /* Container */) {\n container = this.tip;\n break;\n }\n else if (res === 2 /* Leaf */) {\n container = this.tip;\n matchedLeaf = true;\n break;\n }\n else {\n i++;\n }\n }\n if (i === blockStartsLen) {\n // nothing matched\n this.advanceNextNonspace();\n break;\n }\n }\n // What remains at the offset is a text line. Add the text to the\n // appropriate container.\n // First check for a lazy paragraph continuation:\n if (!this.allClosed && !this.blank && this.tip.type === 'paragraph') {\n // lazy paragraph continuation\n this.addLine();\n }\n else {\n // not a lazy continuation\n // finalize any blocks not matched\n this.closeUnmatchedBlocks();\n if (this.blank && container.lastChild) {\n container.lastChild.lastLineBlank = true;\n }\n var t = container.type;\n // Block quote lines are never blank as they start with >\n // and we don't count blanks in fenced code for purposes of tight/loose\n // lists or breaking out of lists. We also don't set _lastLineBlank\n // on an empty list item, or if we just closed a fenced block.\n var lastLineBlank = this.blank &&\n !(t === 'blockQuote' ||\n (isCodeBlock(container) && container.isFenced) ||\n (t === 'item' && !container.firstChild && container.sourcepos[0][0] === this.lineNumber));\n // propagate lastLineBlank up through parents:\n var cont = container;\n while (cont) {\n cont.lastLineBlank = lastLineBlank;\n cont = cont.parent;\n }\n if (blockHandlers[t].acceptsLines) {\n this.addLine();\n // if HtmlBlock, check for end condition\n if (isHtmlBlock(container) &&\n container.htmlBlockType >= 1 &&\n container.htmlBlockType <= 5 &&\n reHtmlBlockClose[container.htmlBlockType].test(this.currentLine.slice(this.offset))) {\n this.lastLineLength = ln.length;\n this.finalize(container, this.lineNumber);\n }\n }\n else if (this.offset < ln.length && !this.blank) {\n // create paragraph container for line\n container = this.addChild('paragraph', this.offset);\n this.advanceNextNonspace();\n this.addLine();\n }\n }\n this.lastLineLength = ln.length;\n };\n // The main parsing function. Returns a parsed document AST.\n Parser.prototype.parse = function (input, lineTexts) {\n this.doc = document$2();\n this.tip = this.doc;\n this.lineNumber = 0;\n this.lastLineLength = 0;\n this.offset = 0;\n this.column = 0;\n this.lastMatchedContainer = this.doc;\n this.currentLine = '';\n var lines = input.split(reLineEnding$1);\n var len = lines.length;\n this.lines = lineTexts ? lineTexts : lines;\n if (this.options.referenceDefinition) {\n this.clearRefMaps();\n }\n if (input.charCodeAt(input.length - 1) === C_NEWLINE) {\n // ignore last blank line created by final newline\n len -= 1;\n }\n for (var i = 0; i < len; i++) {\n this.incorporateLine(lines[i]);\n }\n while (this.tip) {\n this.finalize(this.tip, len);\n }\n this.processInlines(this.doc);\n return this.doc;\n };\n Parser.prototype.partialParseStart = function (lineNumber, lines) {\n this.doc = document$2();\n this.tip = this.doc;\n this.lineNumber = lineNumber - 1;\n this.lastLineLength = 0;\n this.offset = 0;\n this.column = 0;\n this.lastMatchedContainer = this.doc;\n this.currentLine = '';\n var len = lines.length;\n for (var i = 0; i < len; i++) {\n this.incorporateLine(lines[i]);\n }\n return this.doc;\n };\n Parser.prototype.partialParseExtends = function (lines) {\n for (var i = 0; i < lines.length; i++) {\n this.incorporateLine(lines[i]);\n }\n };\n Parser.prototype.partialParseFinish = function () {\n while (this.tip) {\n this.finalize(this.tip, this.lineNumber);\n }\n this.processInlines(this.doc);\n };\n Parser.prototype.setRefMaps = function (refMap, refLinkCandidateMap, refDefCandidateMap) {\n this.refMap = refMap;\n this.refLinkCandidateMap = refLinkCandidateMap;\n this.refDefCandidateMap = refDefCandidateMap;\n };\n Parser.prototype.clearRefMaps = function () {\n [this.refMap, this.refLinkCandidateMap, this.refDefCandidateMap].forEach(function (map) {\n clearObj(map);\n });\n };\n return Parser;\n}());\n\nfunction comparePos(p1, p2) {\n if (p1[0] < p2[0]) {\n return 1 /* LT */;\n }\n if (p1[0] > p2[0]) {\n return -1 /* GT */;\n }\n if (p1[1] < p2[1]) {\n return 1 /* LT */;\n }\n if (p1[1] > p2[1]) {\n return -1 /* GT */;\n }\n return 0 /* EQ */;\n}\nfunction compareRangeAndPos(_a, pos) {\n var startPos = _a[0], endPos = _a[1];\n if (comparePos(endPos, pos) === 1 /* LT */) {\n return 1 /* LT */;\n }\n if (comparePos(startPos, pos) === -1 /* GT */) {\n return -1 /* GT */;\n }\n return 0 /* EQ */;\n}\nfunction removeNextUntil(node, last) {\n if (node.parent !== last.parent || node === last) {\n return;\n }\n var next = node.next;\n while (next && next !== last) {\n var temp = next.next;\n for (var _i = 0, _a = ['parent', 'prev', 'next']; _i < _a.length; _i++) {\n var type = _a[_i];\n if (next[type]) {\n removeNodeById(next[type].id);\n next[type] = null;\n }\n }\n next = temp;\n }\n node.next = last.next;\n if (last.next) {\n last.next.prev = node;\n }\n else {\n node.parent.lastChild = node;\n }\n}\nfunction getChildNodes(parent) {\n var nodes = [];\n var curr = parent.firstChild;\n while (curr) {\n nodes.push(curr);\n curr = curr.next;\n }\n return nodes;\n}\nfunction insertNodesBefore(target, nodes) {\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n target.insertBefore(node);\n }\n}\nfunction prependChildNodes(parent, nodes) {\n for (var i = nodes.length - 1; i >= 0; i -= 1) {\n parent.prependChild(nodes[i]);\n }\n}\nfunction updateNextLineNumbers(base, diff) {\n if (!base || !base.parent || diff === 0) {\n return;\n }\n var walker = base.parent.walker();\n walker.resumeAt(base, true);\n var event;\n while ((event = walker.next())) {\n var node = event.node, entering = event.entering;\n if (entering) {\n node.sourcepos[0][0] += diff;\n node.sourcepos[1][0] += diff;\n }\n }\n}\nfunction compareRangeAndLine(_a, line) {\n var startPos = _a[0], endPos = _a[1];\n if (endPos[0] < line) {\n return 1 /* LT */;\n }\n if (startPos[0] > line) {\n return -1 /* GT */;\n }\n return 0 /* EQ */;\n}\nfunction findChildNodeAtLine(parent, line) {\n var node = parent.firstChild;\n while (node) {\n var comp = compareRangeAndLine(node.sourcepos, line);\n if (comp === 0 /* EQ */) {\n return node;\n }\n if (comp === -1 /* GT */) {\n // To consider that top line is blank line\n return node.prev || node;\n }\n node = node.next;\n }\n return parent.lastChild;\n}\nfunction lastLeafNode(node) {\n while (node.lastChild) {\n node = node.lastChild;\n }\n return node;\n}\nfunction sameLineTopAncestor(node) {\n while (node.parent &&\n node.parent.type !== 'document' &&\n node.parent.sourcepos[0][0] === node.sourcepos[0][0]) {\n node = node.parent;\n }\n return node;\n}\nfunction findFirstNodeAtLine(parent, line) {\n var node = parent.firstChild;\n var prev = null;\n while (node) {\n var comp = compareRangeAndLine(node.sourcepos, line);\n if (comp === 0 /* EQ */) {\n if (node.sourcepos[0][0] === line || !node.firstChild) {\n return node;\n }\n prev = node;\n node = node.firstChild;\n }\n else if (comp === -1 /* GT */) {\n break;\n }\n else {\n prev = node;\n node = node.next;\n }\n }\n if (prev) {\n return sameLineTopAncestor(lastLeafNode(prev));\n }\n return null;\n}\nfunction findNodeAtPosition(parent, pos) {\n var node = parent;\n var prev = null;\n while (node) {\n var comp = compareRangeAndPos(node.sourcepos, pos);\n if (comp === 0 /* EQ */) {\n if (node.firstChild) {\n prev = node;\n node = node.firstChild;\n }\n else {\n return node;\n }\n }\n else if (comp === -1 /* GT */) {\n return prev;\n }\n else if (node.next) {\n node = node.next;\n }\n else {\n return prev;\n }\n }\n return node;\n}\nfunction findNodeById(id) {\n return getNodeById(id) || null;\n}\nfunction invokeNextUntil(callback, start, end) {\n if (end === void 0) { end = null; }\n if (start) {\n var walker = start.walker();\n while (start && start !== end) {\n callback(start);\n var next = walker.next();\n if (next) {\n start = next.node;\n }\n else {\n break;\n }\n }\n }\n}\nfunction isUnlinked(id) {\n var node = findNodeById(id);\n if (!node) {\n return true;\n }\n while (node && node.type !== 'document') {\n // eslint-disable-next-line no-loop-func\n if (!node.parent && !node.prev && !node.next) {\n return true;\n }\n node = node.parent;\n }\n return false;\n}\n\nvar reLineEnding = /\\r\\n|\\n|\\r/;\nfunction canBeContinuedListItem(lineText) {\n var spaceMatch = lineText.match(/^[ \\t]+/);\n if (spaceMatch && (spaceMatch[0].length >= 2 || /\\t/.test(spaceMatch[0]))) {\n return true;\n }\n var leftTrimmed = spaceMatch ? lineText.slice(spaceMatch.length) : lineText;\n return reBulletListMarker.test(leftTrimmed) || reOrderedListMarker.test(leftTrimmed);\n}\nfunction canBeContinuedTableBody(lineText) {\n return !isBlank(lineText) && lineText.indexOf('|') !== -1;\n}\nfunction createRefDefState(node) {\n var id = node.id, title = node.title, sourcepos = node.sourcepos, dest = node.dest;\n return {\n id: id,\n title: title,\n sourcepos: sourcepos,\n unlinked: false,\n destination: dest,\n };\n}\nvar ToastMark = /** @class */ (function () {\n function ToastMark(contents, options) {\n this.refMap = {};\n this.refLinkCandidateMap = {};\n this.refDefCandidateMap = {};\n this.referenceDefinition = !!(options === null || options === void 0 ? void 0 : options.referenceDefinition);\n this.parser = new Parser(options);\n this.parser.setRefMaps(this.refMap, this.refLinkCandidateMap, this.refDefCandidateMap);\n this.eventHandlerMap = { change: [] };\n contents = contents || '';\n this.lineTexts = contents.split(reLineEnding);\n this.root = this.parser.parse(contents, this.lineTexts);\n }\n ToastMark.prototype.updateLineTexts = function (startPos, endPos, newText) {\n var _a;\n var startLine = startPos[0], startCol = startPos[1];\n var endLine = endPos[0], endCol = endPos[1];\n var newLines = newText.split(reLineEnding);\n var newLineLen = newLines.length;\n var startLineText = this.lineTexts[startLine - 1];\n var endLineText = this.lineTexts[endLine - 1];\n newLines[0] = startLineText.slice(0, startCol - 1) + newLines[0];\n newLines[newLineLen - 1] = newLines[newLineLen - 1] + endLineText.slice(endCol - 1);\n var removedLineLen = endLine - startLine + 1;\n (_a = this.lineTexts).splice.apply(_a, __spreadArray([startLine - 1, removedLineLen], newLines));\n return newLineLen - removedLineLen;\n };\n ToastMark.prototype.updateRootNodeState = function () {\n if (this.lineTexts.length === 1 && this.lineTexts[0] === '') {\n this.root.lastLineBlank = true;\n this.root.sourcepos = [\n [1, 1],\n [1, 0],\n ];\n return;\n }\n if (this.root.lastChild) {\n this.root.lastLineBlank = this.root.lastChild.lastLineBlank;\n }\n var lineTexts = this.lineTexts;\n var idx = lineTexts.length - 1;\n while (lineTexts[idx] === '') {\n idx -= 1;\n }\n if (lineTexts.length - 2 > idx) {\n idx += 1;\n }\n this.root.sourcepos[1] = [idx + 1, lineTexts[idx].length];\n };\n ToastMark.prototype.replaceRangeNodes = function (startNode, endNode, newNodes) {\n if (!startNode) {\n if (endNode) {\n insertNodesBefore(endNode, newNodes);\n removeNodeById(endNode.id);\n endNode.unlink();\n }\n else {\n prependChildNodes(this.root, newNodes);\n }\n }\n else {\n insertNodesBefore(startNode, newNodes);\n removeNextUntil(startNode, endNode);\n [startNode.id, endNode.id].forEach(function (id) { return removeNodeById(id); });\n startNode.unlink();\n }\n };\n ToastMark.prototype.getNodeRange = function (startPos, endPos) {\n var startNode = findChildNodeAtLine(this.root, startPos[0]);\n var endNode = findChildNodeAtLine(this.root, endPos[0]);\n // extend node range to include a following block which doesn't have preceding blank line\n if (endNode && endNode.next && endPos[0] + 1 === endNode.next.sourcepos[0][0]) {\n endNode = endNode.next;\n }\n return [startNode, endNode];\n };\n ToastMark.prototype.trigger = function (eventName, param) {\n this.eventHandlerMap[eventName].forEach(function (handler) {\n handler(param);\n });\n };\n ToastMark.prototype.extendEndLine = function (line) {\n while (this.lineTexts[line] === '') {\n line += 1;\n }\n return line;\n };\n ToastMark.prototype.parseRange = function (startNode, endNode, startLine, endLine) {\n // extends starting range if the first node can be a continued list item\n if (startNode &&\n startNode.prev &&\n ((isList(startNode.prev) && canBeContinuedListItem(this.lineTexts[startLine - 1])) ||\n (isTable(startNode.prev) && canBeContinuedTableBody(this.lineTexts[startLine - 1])))) {\n startNode = startNode.prev;\n startLine = startNode.sourcepos[0][0];\n }\n var editedLines = this.lineTexts.slice(startLine - 1, endLine);\n var root = this.parser.partialParseStart(startLine, editedLines);\n // extends ending range if the following node can be a fenced code block or a continued list item\n var nextNode = endNode ? endNode.next : this.root.firstChild;\n var lastChild = root.lastChild;\n var isOpenedLastChildCodeBlock = lastChild && isCodeBlock(lastChild) && lastChild.open;\n var isOpenedLastChildCustomBlock = lastChild && isCustomBlock(lastChild) && lastChild.open;\n var isLastChildList = lastChild && isList(lastChild);\n while (((isOpenedLastChildCodeBlock || isOpenedLastChildCustomBlock) && nextNode) ||\n (isLastChildList && nextNode && (nextNode.type === 'list' || nextNode.sourcepos[0][1] >= 2))) {\n var newEndLine = this.extendEndLine(nextNode.sourcepos[1][0]);\n this.parser.partialParseExtends(this.lineTexts.slice(endLine, newEndLine));\n if (!startNode) {\n startNode = endNode;\n }\n endNode = nextNode;\n endLine = newEndLine;\n nextNode = nextNode.next;\n }\n this.parser.partialParseFinish();\n var newNodes = getChildNodes(root);\n return { newNodes: newNodes, extStartNode: startNode, extEndNode: endNode };\n };\n ToastMark.prototype.getRemovedNodeRange = function (extStartNode, extEndNode) {\n if (!extStartNode ||\n (extStartNode && isRefDef(extStartNode)) ||\n (extEndNode && isRefDef(extEndNode))) {\n return null;\n }\n return {\n id: [extStartNode.id, extEndNode.id],\n line: [extStartNode.sourcepos[0][0] - 1, extEndNode.sourcepos[1][0] - 1],\n };\n };\n ToastMark.prototype.markDeletedRefMap = function (extStartNode, extEndNode) {\n var _this = this;\n if (!isEmptyObj(this.refMap)) {\n var markDeleted = function (node) {\n if (isRefDef(node)) {\n var refDefState = _this.refMap[node.label];\n if (refDefState && node.id === refDefState.id) {\n refDefState.unlinked = true;\n }\n }\n };\n if (extStartNode) {\n invokeNextUntil(markDeleted, extStartNode.parent, extEndNode);\n }\n if (extEndNode) {\n invokeNextUntil(markDeleted, extEndNode);\n }\n }\n };\n ToastMark.prototype.replaceWithNewRefDefState = function (nodes) {\n var _this = this;\n if (!isEmptyObj(this.refMap)) {\n var replaceWith_1 = function (node) {\n if (isRefDef(node)) {\n var label = node.label;\n var refDefState = _this.refMap[label];\n if (!refDefState || refDefState.unlinked) {\n _this.refMap[label] = createRefDefState(node);\n }\n }\n };\n nodes.forEach(function (node) {\n invokeNextUntil(replaceWith_1, node);\n });\n }\n };\n ToastMark.prototype.replaceWithRefDefCandidate = function () {\n var _this = this;\n if (!isEmptyObj(this.refDefCandidateMap)) {\n iterateObject(this.refDefCandidateMap, function (_, candidate) {\n var label = candidate.label, sourcepos = candidate.sourcepos;\n var refDefState = _this.refMap[label];\n if (!refDefState ||\n refDefState.unlinked ||\n refDefState.sourcepos[0][0] > sourcepos[0][0]) {\n _this.refMap[label] = createRefDefState(candidate);\n }\n });\n }\n };\n ToastMark.prototype.getRangeWithRefDef = function (startLine, endLine, startNode, endNode, lineDiff) {\n if (this.referenceDefinition && !isEmptyObj(this.refMap)) {\n var prevNode = findChildNodeAtLine(this.root, startLine - 1);\n var nextNode = findChildNodeAtLine(this.root, endLine + 1);\n if (prevNode && isRefDef(prevNode) && prevNode !== startNode && prevNode !== endNode) {\n startNode = prevNode;\n startLine = startNode.sourcepos[0][0];\n }\n if (nextNode && isRefDef(nextNode) && nextNode !== startNode && nextNode !== endNode) {\n endNode = nextNode;\n endLine = this.extendEndLine(endNode.sourcepos[1][0] + lineDiff);\n }\n }\n return [startNode, endNode, startLine, endLine];\n };\n ToastMark.prototype.parse = function (startPos, endPos, lineDiff) {\n if (lineDiff === void 0) { lineDiff = 0; }\n var range = this.getNodeRange(startPos, endPos);\n var startNode = range[0], endNode = range[1];\n var startLine = startNode ? Math.min(startNode.sourcepos[0][0], startPos[0]) : startPos[0];\n var endLine = this.extendEndLine((endNode ? Math.max(endNode.sourcepos[1][0], endPos[0]) : endPos[0]) + lineDiff);\n var parseResult = this.parseRange.apply(this, this.getRangeWithRefDef(startLine, endLine, startNode, endNode, lineDiff));\n var newNodes = parseResult.newNodes, extStartNode = parseResult.extStartNode, extEndNode = parseResult.extEndNode;\n var removedNodeRange = this.getRemovedNodeRange(extStartNode, extEndNode);\n var nextNode = extEndNode ? extEndNode.next : this.root.firstChild;\n if (this.referenceDefinition) {\n this.markDeletedRefMap(extStartNode, extEndNode);\n this.replaceRangeNodes(extStartNode, extEndNode, newNodes);\n this.replaceWithNewRefDefState(newNodes);\n }\n else {\n this.replaceRangeNodes(extStartNode, extEndNode, newNodes);\n }\n return { nodes: newNodes, removedNodeRange: removedNodeRange, nextNode: nextNode };\n };\n ToastMark.prototype.parseRefLink = function () {\n var _this = this;\n var result = [];\n if (!isEmptyObj(this.refMap)) {\n iterateObject(this.refMap, function (label, value) {\n if (value.unlinked) {\n delete _this.refMap[label];\n }\n iterateObject(_this.refLinkCandidateMap, function (_, candidate) {\n var node = candidate.node, refLabel = candidate.refLabel;\n if (refLabel === label) {\n result.push(_this.parse(node.sourcepos[0], node.sourcepos[1]));\n }\n });\n });\n }\n return result;\n };\n ToastMark.prototype.removeUnlinkedCandidate = function () {\n if (!isEmptyObj(this.refDefCandidateMap)) {\n [this.refLinkCandidateMap, this.refDefCandidateMap].forEach(function (candidateMap) {\n iterateObject(candidateMap, function (id) {\n if (isUnlinked(id)) {\n delete candidateMap[id];\n }\n });\n });\n }\n };\n ToastMark.prototype.editMarkdown = function (startPos, endPos, newText) {\n var lineDiff = this.updateLineTexts(startPos, endPos, newText);\n var parseResult = this.parse(startPos, endPos, lineDiff);\n var editResult = omit(parseResult, 'nextNode');\n updateNextLineNumbers(parseResult.nextNode, lineDiff);\n this.updateRootNodeState();\n var result = [editResult];\n if (this.referenceDefinition) {\n this.removeUnlinkedCandidate();\n this.replaceWithRefDefCandidate();\n result = result.concat(this.parseRefLink());\n }\n this.trigger('change', result);\n return result;\n };\n ToastMark.prototype.getLineTexts = function () {\n return this.lineTexts;\n };\n ToastMark.prototype.getRootNode = function () {\n return this.root;\n };\n ToastMark.prototype.findNodeAtPosition = function (pos) {\n var node = findNodeAtPosition(this.root, pos);\n if (!node || node === this.root) {\n return null;\n }\n return node;\n };\n ToastMark.prototype.findFirstNodeAtLine = function (line) {\n return findFirstNodeAtLine(this.root, line);\n };\n ToastMark.prototype.on = function (eventName, callback) {\n this.eventHandlerMap[eventName].push(callback);\n };\n ToastMark.prototype.off = function (eventName, callback) {\n var handlers = this.eventHandlerMap[eventName];\n var idx = handlers.indexOf(callback);\n handlers.splice(idx, 1);\n };\n ToastMark.prototype.findNodeById = function (id) {\n return findNodeById(id);\n };\n ToastMark.prototype.removeAllNode = function () {\n removeAllNode();\n };\n return ToastMark;\n}());\n\nvar disallowedTags = [\n 'title',\n 'textarea',\n 'style',\n 'xmp',\n 'iframe',\n 'noembed',\n 'noframes',\n 'script',\n 'plaintext',\n];\nvar reDisallowedTag = new RegExp(\"<(/?(?:\" + disallowedTags.join('|') + \")[^>]*>)\", 'ig');\nfunction filterDisallowedTags(str) {\n if (reDisallowedTag.test(str)) {\n return str.replace(reDisallowedTag, function (_, group) { return \"<\" + group; });\n }\n return str;\n}\n\nvar baseConvertors$1 = {\n heading: function (node, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: \"h\" + node.level,\n outerNewLine: true,\n };\n },\n text: function (node) {\n return {\n type: 'text',\n content: node.literal,\n };\n },\n softbreak: function (_, _a) {\n var options = _a.options;\n return {\n type: 'html',\n content: options.softbreak,\n };\n },\n linebreak: function () {\n return {\n type: 'html',\n content: '
\\n',\n };\n },\n emph: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'em',\n };\n },\n strong: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'strong',\n };\n },\n paragraph: function (node, _a) {\n var _b;\n var entering = _a.entering;\n var grandparent = (_b = node.parent) === null || _b === void 0 ? void 0 : _b.parent;\n if (grandparent && grandparent.type === 'list') {\n if (grandparent.listData.tight) {\n return null;\n }\n }\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'p',\n outerNewLine: true,\n };\n },\n thematicBreak: function () {\n return {\n type: 'openTag',\n tagName: 'hr',\n outerNewLine: true,\n selfClose: true,\n };\n },\n blockQuote: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'blockquote',\n outerNewLine: true,\n innerNewLine: true,\n };\n },\n list: function (node, _a) {\n var entering = _a.entering;\n var _b = node.listData, type = _b.type, start = _b.start;\n var tagName = type === 'bullet' ? 'ul' : 'ol';\n var attributes = {};\n if (tagName === 'ol' && start !== null && start !== 1) {\n attributes.start = start.toString();\n }\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: tagName,\n attributes: attributes,\n outerNewLine: true,\n };\n },\n item: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'li',\n outerNewLine: true,\n };\n },\n htmlInline: function (node, _a) {\n var options = _a.options;\n var content = options.tagFilter ? filterDisallowedTags(node.literal) : node.literal;\n return { type: 'html', content: content };\n },\n htmlBlock: function (node, _a) {\n var options = _a.options;\n var content = options.tagFilter ? filterDisallowedTags(node.literal) : node.literal;\n if (options.nodeId) {\n return [\n { type: 'openTag', tagName: 'div', outerNewLine: true },\n { type: 'html', content: content },\n { type: 'closeTag', tagName: 'div', outerNewLine: true },\n ];\n }\n return { type: 'html', content: content, outerNewLine: true };\n },\n code: function (node) {\n return [\n { type: 'openTag', tagName: 'code' },\n { type: 'text', content: node.literal },\n { type: 'closeTag', tagName: 'code' },\n ];\n },\n codeBlock: function (node) {\n var infoStr = node.info;\n var infoWords = infoStr ? infoStr.split(/\\s+/) : [];\n var codeClassNames = [];\n if (infoWords.length > 0 && infoWords[0].length > 0) {\n codeClassNames.push(\"language-\" + escapeXml(infoWords[0]));\n }\n return [\n { type: 'openTag', tagName: 'pre', outerNewLine: true },\n { type: 'openTag', tagName: 'code', classNames: codeClassNames },\n { type: 'text', content: node.literal },\n { type: 'closeTag', tagName: 'code' },\n { type: 'closeTag', tagName: 'pre', outerNewLine: true },\n ];\n },\n link: function (node, _a) {\n var entering = _a.entering;\n if (entering) {\n var _b = node, title = _b.title, destination = _b.destination;\n return {\n type: 'openTag',\n tagName: 'a',\n attributes: __assign({ href: escapeXml(destination) }, (title && { title: escapeXml(title) })),\n };\n }\n return { type: 'closeTag', tagName: 'a' };\n },\n image: function (node, _a) {\n var getChildrenText = _a.getChildrenText, skipChildren = _a.skipChildren;\n var _b = node, title = _b.title, destination = _b.destination;\n skipChildren();\n return {\n type: 'openTag',\n tagName: 'img',\n selfClose: true,\n attributes: __assign({ src: escapeXml(destination), alt: getChildrenText(node) }, (title && { title: escapeXml(title) })),\n };\n },\n customBlock: function (node, context, convertors) {\n var info = node.info.trim().toLowerCase();\n var customConvertor = convertors[info];\n if (customConvertor) {\n try {\n return customConvertor(node, context);\n }\n catch (e) {\n console.warn(\"[@toast-ui/editor] - The error occurred when \" + info + \" block node was parsed in markdown renderer: \" + e);\n }\n }\n return [\n { type: 'openTag', tagName: 'div', outerNewLine: true },\n { type: 'text', content: node.literal },\n { type: 'closeTag', tagName: 'div', outerNewLine: true },\n ];\n },\n frontMatter: function (node) {\n return [\n {\n type: 'openTag',\n tagName: 'div',\n outerNewLine: true,\n // Because front matter is metadata, it should not be render.\n attributes: { style: 'white-space: pre; display: none;' },\n },\n { type: 'text', content: node.literal },\n { type: 'closeTag', tagName: 'div', outerNewLine: true },\n ];\n },\n customInline: function (node, context, convertors) {\n var _a = node, info = _a.info, firstChild = _a.firstChild;\n var nomalizedInfo = info.trim().toLowerCase();\n var customConvertor = convertors[nomalizedInfo];\n var entering = context.entering;\n if (customConvertor) {\n try {\n return customConvertor(node, context);\n }\n catch (e) {\n console.warn(\"[@toast-ui/editor] - The error occurred when \" + nomalizedInfo + \" inline node was parsed in markdown renderer: \" + e);\n }\n }\n return entering\n ? [\n { type: 'openTag', tagName: 'span' },\n { type: 'text', content: \"$$\" + info + (firstChild ? ' ' : '') },\n ]\n : [\n { type: 'text', content: '$$' },\n { type: 'closeTag', tagName: 'span' },\n ];\n },\n};\n\nvar gfmConvertors = {\n strike: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'del',\n };\n },\n item: function (node, _a) {\n var entering = _a.entering;\n var _b = node.listData, checked = _b.checked, task = _b.task;\n if (entering) {\n var itemTag = {\n type: 'openTag',\n tagName: 'li',\n outerNewLine: true,\n };\n if (task) {\n return [\n itemTag,\n {\n type: 'openTag',\n tagName: 'input',\n selfClose: true,\n attributes: __assign(__assign({}, (checked && { checked: '' })), { disabled: '', type: 'checkbox' }),\n },\n {\n type: 'text',\n content: ' ',\n },\n ];\n }\n return itemTag;\n }\n return {\n type: 'closeTag',\n tagName: 'li',\n outerNewLine: true,\n };\n },\n table: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'table',\n outerNewLine: true,\n };\n },\n tableHead: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'thead',\n outerNewLine: true,\n };\n },\n tableBody: function (_, _a) {\n var entering = _a.entering;\n return {\n type: entering ? 'openTag' : 'closeTag',\n tagName: 'tbody',\n outerNewLine: true,\n };\n },\n tableRow: function (node, _a) {\n var entering = _a.entering;\n if (entering) {\n return {\n type: 'openTag',\n tagName: 'tr',\n outerNewLine: true,\n };\n }\n var result = [];\n if (node.lastChild) {\n var columnLen = node.parent.parent.columns.length;\n var lastColIdx = node.lastChild.endIdx;\n for (var i = lastColIdx + 1; i < columnLen; i += 1) {\n result.push({\n type: 'openTag',\n tagName: 'td',\n outerNewLine: true,\n }, {\n type: 'closeTag',\n tagName: 'td',\n outerNewLine: true,\n });\n }\n }\n result.push({\n type: 'closeTag',\n tagName: 'tr',\n outerNewLine: true,\n });\n return result;\n },\n tableCell: function (node, _a) {\n var entering = _a.entering;\n if (node.ignored) {\n return {\n type: 'text',\n content: '',\n };\n }\n var tablePart = node.parent.parent;\n var tagName = tablePart.type === 'tableHead' ? 'th' : 'td';\n var table = tablePart.parent;\n var columnInfo = table.columns[node.startIdx];\n var attributes = (columnInfo === null || columnInfo === void 0 ? void 0 : columnInfo.align) ? { align: columnInfo.align } : null;\n if (entering) {\n return __assign({ type: 'openTag', tagName: tagName, outerNewLine: true }, (attributes && { attributes: attributes }));\n }\n return {\n type: 'closeTag',\n tagName: tagName,\n outerNewLine: true,\n };\n },\n};\n\nvar defaultOptions = {\n softbreak: '\\n',\n gfm: false,\n tagFilter: false,\n nodeId: false,\n};\nfunction getChildrenText(node) {\n var buffer = [];\n var walker = node.walker();\n var event = null;\n while ((event = walker.next())) {\n var node_1 = event.node;\n if (node_1.type === 'text') {\n buffer.push(node_1.literal);\n }\n }\n return buffer.join('');\n}\nvar Renderer = /** @class */ (function () {\n function Renderer(customOptions) {\n this.buffer = [];\n this.options = __assign(__assign({}, defaultOptions), customOptions);\n this.convertors = this.createConvertors();\n delete this.options.convertors;\n }\n Renderer.prototype.createConvertors = function () {\n var convertors = __assign({}, baseConvertors$1);\n if (this.options.gfm) {\n convertors = __assign(__assign({}, convertors), gfmConvertors);\n }\n if (this.options.convertors) {\n var customConvertors_1 = this.options.convertors;\n var nodeTypes = Object.keys(customConvertors_1);\n var defaultConvertors_1 = __assign(__assign({}, baseConvertors$1), gfmConvertors);\n nodeTypes.forEach(function (nodeType) {\n var orgConvertor = convertors[nodeType];\n var convertor = customConvertors_1[nodeType];\n var convertorType = Object.keys(defaultConvertors_1).indexOf(nodeType) === -1\n ? nodeType.toLowerCase()\n : nodeType;\n if (orgConvertor) {\n convertors[convertorType] = function (node, context, convertors) {\n context.origin = function () { return orgConvertor(node, context, convertors); };\n return convertor(node, context);\n };\n }\n else {\n convertors[convertorType] = convertor;\n }\n });\n }\n return convertors;\n };\n Renderer.prototype.getConvertors = function () {\n return this.convertors;\n };\n Renderer.prototype.getOptions = function () {\n return this.options;\n };\n Renderer.prototype.render = function (rootNode) {\n var _this = this;\n this.buffer = [];\n var walker = rootNode.walker();\n var event = null;\n var _loop_1 = function () {\n var node = event.node, entering = event.entering;\n var convertor = this_1.convertors[node.type];\n if (!convertor) {\n return \"continue\";\n }\n var skipped = false;\n var context = {\n entering: entering,\n leaf: !isContainer$1(node),\n options: this_1.options,\n getChildrenText: getChildrenText,\n skipChildren: function () {\n skipped = true;\n },\n };\n var converted = isCustomBlock(node) || isCustomInline(node)\n ? convertor(node, context, this_1.convertors)\n : convertor(node, context);\n if (converted) {\n var htmlNodes = Array.isArray(converted) ? converted : [converted];\n htmlNodes.forEach(function (htmlNode, index) {\n if (htmlNode.type === 'openTag' && _this.options.nodeId && index === 0) {\n if (!htmlNode.attributes) {\n htmlNode.attributes = {};\n }\n htmlNode.attributes['data-nodeid'] = String(node.id);\n }\n _this.renderHTMLNode(htmlNode);\n });\n if (skipped) {\n walker.resumeAt(node, false);\n walker.next();\n }\n }\n };\n var this_1 = this;\n while ((event = walker.next())) {\n _loop_1();\n }\n this.addNewLine();\n return this.buffer.join('');\n };\n Renderer.prototype.renderHTMLNode = function (node) {\n switch (node.type) {\n case 'openTag':\n case 'closeTag':\n this.renderElementNode(node);\n break;\n case 'text':\n this.renderTextNode(node);\n break;\n case 'html':\n this.renderRawHtmlNode(node);\n break;\n // no-default-case\n }\n };\n Renderer.prototype.generateOpenTagString = function (node) {\n var _this = this;\n var tagName = node.tagName, classNames = node.classNames, attributes = node.attributes;\n this.buffer.push(\"<\" + tagName);\n if (classNames && classNames.length > 0) {\n this.buffer.push(\" class=\\\"\" + classNames.join(' ') + \"\\\"\");\n }\n if (attributes) {\n Object.keys(attributes).forEach(function (attrName) {\n var attrValue = attributes[attrName];\n _this.buffer.push(\" \" + attrName + \"=\\\"\" + attrValue + \"\\\"\");\n });\n }\n if (node.selfClose) {\n this.buffer.push(' /');\n }\n this.buffer.push('>');\n };\n Renderer.prototype.generateCloseTagString = function (_a) {\n var tagName = _a.tagName;\n this.buffer.push(\"\");\n };\n Renderer.prototype.addNewLine = function () {\n if (this.buffer.length && last(last(this.buffer)) !== '\\n') {\n this.buffer.push('\\n');\n }\n };\n Renderer.prototype.addOuterNewLine = function (node) {\n if (node.outerNewLine) {\n this.addNewLine();\n }\n };\n Renderer.prototype.addInnerNewLine = function (node) {\n if (node.innerNewLine) {\n this.addNewLine();\n }\n };\n Renderer.prototype.renderTextNode = function (node) {\n this.buffer.push(escapeXml(node.content));\n };\n Renderer.prototype.renderRawHtmlNode = function (node) {\n this.addOuterNewLine(node);\n this.buffer.push(node.content);\n this.addOuterNewLine(node);\n };\n Renderer.prototype.renderElementNode = function (node) {\n if (node.type === 'openTag') {\n this.addOuterNewLine(node);\n this.generateOpenTagString(node);\n if (node.selfClose) {\n this.addOuterNewLine(node);\n }\n else {\n this.addInnerNewLine(node);\n }\n }\n else {\n this.addInnerNewLine(node);\n this.generateCloseTagString(node);\n this.addOuterNewLine(node);\n }\n };\n return Renderer;\n}());\n\n/*! @license DOMPurify 2.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.3/LICENSE */\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\nvar _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\nif (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\n\nif (!construct) {\n construct = function construct(Func, args) {\n return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();\n };\n}\n\nvar arrayForEach = unapply(Array.prototype.forEach);\nvar arrayPop = unapply(Array.prototype.pop);\nvar arrayPush = unapply(Array.prototype.push);\n\nvar stringToLowerCase = unapply(String.prototype.toLowerCase);\nvar stringMatch = unapply(String.prototype.match);\nvar stringReplace = unapply(String.prototype.replace);\nvar stringIndexOf = unapply(String.prototype.indexOf);\nvar stringTrim = unapply(String.prototype.trim);\n\nvar regExpTest = unapply(RegExp.prototype.test);\n\nvar typeErrorCreate = unconstruct(TypeError);\n\nfunction unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n}\n\nfunction unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n}\n\n/* Add properties to a lookup table */\nfunction addToSet(set, array) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === 'string') {\n var lcElement = stringToLowerCase(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/* Shallow clone an object */\nfunction clone(object) {\n var newObject = create(null);\n\n var property = void 0;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n}\n\n/* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n}\n\nvar html$2 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n// SVG\nvar svg = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n\nvar svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nvar svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'feimage', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n\nvar mathMl = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nvar mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n\nvar text = freeze(['#text']);\n\nvar html$1$1 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n\nvar svg$1 = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\nvar mathMl$1 = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\nvar xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nvar ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html$$1) {\n return html$$1;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\n\nfunction createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '2.3.3';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n Text = window.Text,\n Comment = window.Comment,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n\n\n var ElementPrototype = Element.prototype;\n\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML('') : '';\n\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n\n\n var documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n\n var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n ERB_EXPR$$1 = ERB_EXPR,\n DATA_ATTR$$1 = DATA_ATTR,\n ARIA_ATTR$$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html$2), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));\n\n /* Allowed attribute names */\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n var FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n var FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n var ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n var ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n var SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with ... should be returned */\n var WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n var SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n var FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n var RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n var RETURN_DOM_FRAGMENT = false;\n\n /* If `RETURN_DOM` or `RETURN_DOM_FRAGMENT` is enabled, decide if the returned DOM\n * `Node` is imported into the current `Document`. If this flag is not enabled the\n * `Node` will belong (its ownerDocument) to a fresh `HTMLDocument`, created by\n * DOMPurify.\n *\n * This defaults to `true` starting DOMPurify 2.2.0. Note that setting it to `false`\n * might cause XSS from attacks hidden in closed shadowroots in case the browser\n * supports Declarative Shadow: DOM https://web.dev/declarative-shadow-dom/\n */\n var RETURN_DOM_IMPORT = true;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n var RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks? */\n var SANITIZE_DOM = true;\n\n /* Keep element content when removing element? */\n var KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n var IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n var USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n /* Tags that are safe for data: URIs */\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n /* Attributes safe for values like \"javascript:\" */\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n\n /* Parsing of strict XHTML documents */\n var PARSER_MEDIA_TYPE = void 0;\n var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n var transformCaseFunc = void 0;\n\n /* Keep a reference to config to pass to hooks */\n var CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n /* Set configuration parameters */\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_DOM_IMPORT = cfg.RETURN_DOM_IMPORT !== false; // Default true\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? function (x) {\n return x;\n } : stringToLowerCase;\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$2);\n addToSet(ALLOWED_ATTR, html$1$1);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl);\n addToSet(ALLOWED_ATTR, mathMl$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n var ALL_SVG_TAGS = addToSet({}, svg);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n\n var ALL_MATHML_TAGS = addToSet({}, mathMl);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erronously deleted from\n // HTML namespace.\n var commonSvgAndHTMLElements = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG or MathML). Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc = void 0;\n var leadingWhitespace = void 0;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml') {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '' + dirty + '';\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n var _isClobbered = function _isClobbered(elm) {\n if (elm instanceof Text || elm instanceof Comment) {\n return false;\n }\n\n if (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function') {\n return true;\n }\n\n return false;\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n var _isNode = function _isNode(object) {\n return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? object instanceof Node : object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content = void 0;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check if tagname contains Unicode */\n if (stringMatch(currentNode.nodeName, /[\\u0080-\\uFFFF]/)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n var tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (!_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Mitigate a problem with templates inside select */\n if (tagName === 'select' && regExpTest(/