diff --git a/package-lock.json b/package-lock.json
index 31eab02c..9a29e556 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "alpheios-alignment-editor",
- "version": "1.3.2",
+ "version": "1.3.3",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -5250,9 +5250,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30001158",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001158.tgz",
- "integrity": "sha512-s5loVYY+yKpuVA3HyW8BarzrtJvwHReuzugQXlv1iR3LKSReoFXRm86mT6hT7PEF5RxW+XQZg+6nYjlywYzQ+g==",
+ "version": "1.0.30001219",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001219.tgz",
+ "integrity": "sha512-c0yixVG4v9KBc/tQ2rlbB3A/bgBFRvl8h8M4IeUbqCca4gsiCfvtaheUssbnux/Mb66Vjz7x8yYjDgYcNQOhyQ==",
"dev": true
},
"capture-exit": {
@@ -5688,12 +5688,6 @@
"node-releases": "^1.1.71"
}
},
- "caniuse-lite": {
- "version": "1.0.30001208",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001208.tgz",
- "integrity": "sha512-OE5UE4+nBOro8Dyvv0lfx+SRtfVIOM9uhKqFmJeUbGriqhhStgp1A0OyBpgy3OUF8AhYCT+PVwPC1gMl2ZcQMA==",
- "dev": true
- },
"colorette": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
diff --git a/public/dist/alpheios-alignment-editor.js b/public/dist/alpheios-alignment-editor.js
index 44a89cdb..17955b64 100644
--- a/public/dist/alpheios-alignment-editor.js
+++ b/public/dist/alpheios-alignment-editor.js
@@ -141,6 +141,16 @@
/***/ }),
+/***/ "../node_modules/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/dist/cjs.js??clonedRuleSet-5[0].rules[0].use[1]!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-5[0].rules[0].use[2]!../node_modules/vue-loader/lib/index.js??vue-loader-options!./vue/summary-popup.vue?vue&type=style&index=0&lang=scss&":
+/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+ !*** ../node_modules/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/dist/cjs.js??clonedRuleSet-5[0].rules[0].use[1]!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-5[0].rules[0].use[2]!../node_modules/vue-loader/lib/index.js??vue-loader-options!./vue/summary-popup.vue?vue&type=style&index=0&lang=scss& ***!
+ \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/***/ (() => {
+
+// extracted by mini-css-extract-plugin
+
+/***/ }),
+
/***/ "../node_modules/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/dist/cjs.js??clonedRuleSet-5[0].rules[0].use[1]!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-5[0].rules[0].use[2]!../node_modules/vue-loader/lib/index.js??vue-loader-options!./vue/text-editor/actions-menu-text-editor.vue?vue&type=style&index=0&lang=scss&":
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ../node_modules/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/dist/cjs.js??clonedRuleSet-5[0].rules[0].use[1]!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-5[0].rules[0].use[2]!../node_modules/vue-loader/lib/index.js??vue-loader-options!./vue/text-editor/actions-menu-text-editor.vue?vue&type=style&index=0&lang=scss& ***!
@@ -38479,18 +38489,8 @@ class AlignedGroupsController {
this.alignment = alignment
- _lib_notifications_notification_singleton__WEBPACK_IMPORTED_MODULE_1__.default.addNotification({
- text: _lib_l10n_l10n_singleton_js__WEBPACK_IMPORTED_MODULE_0__.default.getMsgS('ALIGNED_CONTROLLER_TOKENIZATION_STARTED'),
- type: _lib_notifications_notification_singleton__WEBPACK_IMPORTED_MODULE_1__.default.types.INFO
- })
-
const resultAlignment = await this.alignment.createAlignedTexts(useSpecificEnglishTokenizer)
- _lib_notifications_notification_singleton__WEBPACK_IMPORTED_MODULE_1__.default.addNotification({
- text: _lib_l10n_l10n_singleton_js__WEBPACK_IMPORTED_MODULE_0__.default.getMsgS('ALIGNED_CONTROLLER_TOKENIZATION_FINISHED'),
- type: _lib_notifications_notification_singleton__WEBPACK_IMPORTED_MODULE_1__.default.types.INFO
- })
-
if (!resultAlignment) {
this.alignment.clearAlignedTexts() // notification is alredy published
this.store.commit('incrementAlignmentUpdated')
@@ -39437,6 +39437,10 @@ class SettingsController {
return this.options.app && this.options.app.items.useSpecificEnglishTokenizer ? this.options.app.items.useSpecificEnglishTokenizer.currentValue : false
}
+ get showSummaryPopup () {
+ return this.options.app && this.options.app.items.showSummaryPopup ? this.options.app.items.showSummaryPopup.currentValue : false
+ }
+
/**
* @returns {Boolean} - allowUpdateTokenWord optin value
*/
@@ -40035,6 +40039,14 @@ class TextsController {
removeDetectedFlag (textType, docSourceId) {
return this.alignment.removeDetectedFlag(textType, docSourceId)
}
+
+ get originalLangData () {
+ return this.alignment.originalLangData
+ }
+
+ get targetsLangData () {
+ return this.alignment.targetsLangData
+ }
}
@@ -42244,6 +42256,14 @@ class Alignment {
return this.originDocSource && Boolean(this.originDocSource.text)
}
+ get originalLangData () {
+ return this.originDocSource.langData
+ }
+
+ get targetsLangData () {
+ return Object.keys(this.targets).map(targetId => this.targets[targetId].docSource.langData)
+ }
+
/**
* @returns { SourceText | null } target docSource
*/
@@ -43470,6 +43490,7 @@ __webpack_require__.r(__webpack_exports__);
let allLangs = []
let rtlLangs = []
+let langsDict = {}
class Langs {
/**
@@ -43482,6 +43503,10 @@ class Langs {
return allLangs
}
+ static defineLangName (langCode) {
+ return langsDict[langCode]
+ }
+
/**
* Uploads once rtl language's list. And defines direction by langCode.
* @returns {String} - rtl/ltr
@@ -43508,12 +43533,15 @@ class Langs {
value: langData.value,
text: l10nMessage || langData.label
})
+
+ langsDict[langData.value] = l10nMessage || langData.label
})
}
static clearLangsArrs () {
allLangs = []
rtlLangs = []
+ langsDict = {}
}
}
@@ -43698,6 +43726,10 @@ class Metadata {
this.properties = {}
}
+ get isEmpty () {
+ return Object.values(_lib_data_metadata_term_js__WEBPACK_IMPORTED_MODULE_0__.default.property).every(property => !this.hasProperty(property))
+ }
+
isSupportedProperty (property) {
return Object.values(_lib_data_metadata_term_js__WEBPACK_IMPORTED_MODULE_0__.default.property).includes(property)
}
@@ -43942,6 +43974,8 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! uuid */ "../node_modules/uuid/index.js");
/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(uuid__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _lib_data_metadata_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/lib/data/metadata.js */ "./lib/data/metadata.js");
+/* harmony import */ var _lib_data_langs_langs_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/lib/data/langs/langs.js */ "./lib/data/langs/langs.js");
+
@@ -43996,6 +44030,20 @@ class SourceText {
return 'text'
}
+ get hasEmptyMetadata () {
+ return this.metadata.isEmpty
+ }
+
+ get langData () {
+ const textPart = this.text.substr(0, 10)
+ const langName = _lib_data_langs_langs_js__WEBPACK_IMPORTED_MODULE_5__.default.defineLangName(this.lang)
+ return {
+ textPart: textPart.length < this.text.length ? `${textPart.trim()}...` : textPart,
+ langCode: this.lang,
+ langName: langName || this.lang
+ }
+ }
+
clear () {
this.text = ''
this.direction = this.defaultDirection
@@ -44915,7 +44963,7 @@ __webpack_require__.r(__webpack_exports__);
class StoreDefinition {
// A build name info will be injected by webpack into the BUILD_NAME but need to have a fallback in case it fails
static get libBuildName () {
- return true ? "i327-text-editor-screen-fixes.20210426390" : 0
+ return true ? "i344-summary-popup.20210429625" : 0
}
static get libName () {
@@ -46209,13 +46257,14 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _lib_data_alignment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/lib/data/alignment */ "./lib/data/alignment.js");
/* harmony import */ var _vue_initial_screen_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/vue/initial-screen.vue */ "./vue/initial-screen.vue");
/* harmony import */ var _vue_main_menu_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/vue/main-menu.vue */ "./vue/main-menu.vue");
-/* harmony import */ var _vue_notification_bar_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/vue/notification-bar.vue */ "./vue/notification-bar.vue");
-/* harmony import */ var _vue_text_editor_text_editor_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/vue/text-editor/text-editor.vue */ "./vue/text-editor/text-editor.vue");
-/* harmony import */ var _vue_align_editor_align_editor_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/vue/align-editor/align-editor.vue */ "./vue/align-editor/align-editor.vue");
-/* harmony import */ var _vue_tokens_editor_tokens_editor_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/vue/tokens-editor/tokens-editor.vue */ "./vue/tokens-editor/tokens-editor.vue");
-/* harmony import */ var _vue_options_options_block_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/vue/options/options-block.vue */ "./vue/options/options-block.vue");
-/* harmony import */ var _inline_icons_navbar_svg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/inline-icons/navbar.svg */ "./inline-icons/navbar.svg");
-/* harmony import */ var _inline_icons_navbar_svg__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_inline_icons_navbar_svg__WEBPACK_IMPORTED_MODULE_9__);
+/* harmony import */ var _vue_summary_popup_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/vue/summary-popup.vue */ "./vue/summary-popup.vue");
+/* harmony import */ var _vue_notification_bar_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/vue/notification-bar.vue */ "./vue/notification-bar.vue");
+/* harmony import */ var _vue_text_editor_text_editor_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/vue/text-editor/text-editor.vue */ "./vue/text-editor/text-editor.vue");
+/* harmony import */ var _vue_align_editor_align_editor_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/vue/align-editor/align-editor.vue */ "./vue/align-editor/align-editor.vue");
+/* harmony import */ var _vue_tokens_editor_tokens_editor_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/vue/tokens-editor/tokens-editor.vue */ "./vue/tokens-editor/tokens-editor.vue");
+/* harmony import */ var _vue_options_options_block_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/vue/options/options-block.vue */ "./vue/options/options-block.vue");
+/* harmony import */ var _inline_icons_navbar_svg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/inline-icons/navbar.svg */ "./inline-icons/navbar.svg");
+/* harmony import */ var _inline_icons_navbar_svg__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_inline_icons_navbar_svg__WEBPACK_IMPORTED_MODULE_10__);
//
//
//
@@ -46249,6 +46298,11 @@ __webpack_require__.r(__webpack_exports__);
//
//
//
+//
+//
+//
+
+
@@ -46269,13 +46323,14 @@ __webpack_require__.r(__webpack_exports__);
name: 'App',
components: {
mainMenu: _vue_main_menu_vue__WEBPACK_IMPORTED_MODULE_3__.default,
- textEditor: _vue_text_editor_text_editor_vue__WEBPACK_IMPORTED_MODULE_5__.default,
- alignEditor: _vue_align_editor_align_editor_vue__WEBPACK_IMPORTED_MODULE_6__.default,
- tokensEditor: _vue_tokens_editor_tokens_editor_vue__WEBPACK_IMPORTED_MODULE_7__.default,
- notificationBar: _vue_notification_bar_vue__WEBPACK_IMPORTED_MODULE_4__.default,
- optionsBlock: _vue_options_options_block_vue__WEBPACK_IMPORTED_MODULE_8__.default,
- navbarIcon: (_inline_icons_navbar_svg__WEBPACK_IMPORTED_MODULE_9___default()),
- initialScreen: _vue_initial_screen_vue__WEBPACK_IMPORTED_MODULE_2__.default
+ textEditor: _vue_text_editor_text_editor_vue__WEBPACK_IMPORTED_MODULE_6__.default,
+ alignEditor: _vue_align_editor_align_editor_vue__WEBPACK_IMPORTED_MODULE_7__.default,
+ tokensEditor: _vue_tokens_editor_tokens_editor_vue__WEBPACK_IMPORTED_MODULE_8__.default,
+ notificationBar: _vue_notification_bar_vue__WEBPACK_IMPORTED_MODULE_5__.default,
+ optionsBlock: _vue_options_options_block_vue__WEBPACK_IMPORTED_MODULE_9__.default,
+ navbarIcon: (_inline_icons_navbar_svg__WEBPACK_IMPORTED_MODULE_10___default()),
+ initialScreen: _vue_initial_screen_vue__WEBPACK_IMPORTED_MODULE_2__.default,
+ summaryPopup: _vue_summary_popup_vue__WEBPACK_IMPORTED_MODULE_4__.default
},
data () {
return {
@@ -46288,7 +46343,10 @@ __webpack_require__.r(__webpack_exports__);
pageClasses: [ 'initial-page', 'options-page', 'text-editor-page', 'align-editor-page', 'tokens-editor-page' ],
menuShow: 1,
renderTokensEditor: 1,
- updateCurrentPage: 'initial-screen'
+ updateCurrentPage: 'initial-screen',
+
+ showSummaryModal: false,
+ showOnlyWaitingSummary: false
}
},
computed: {
@@ -46336,11 +46394,17 @@ __webpack_require__.r(__webpack_exports__);
undoAction () {
this.$historyC.undo()
},
+
+ showSummaryPopup () {
+ this.showOnlyWaitingSummary = !this.$settingsC.showSummaryPopup
+ this.showSummaryModal = true
+ },
/**
* Starts align workflow
*/
async alignTexts () {
const result = await this.$alignedGC.createAlignedTexts(this.$textC.alignment, this.$settingsC.useSpecificEnglishTokenizer)
+ this.showSummaryModal = false
if (result) {
this.showAlignmentGroupsEditor()
}
@@ -47056,7 +47120,7 @@ __webpack_require__.r(__webpack_exports__);
this.$emit('add-target')
this.closeMenu()
},
-
+
alignTexts () {
this.$emit('align-texts')
this.closeMenu()
@@ -47446,7 +47510,6 @@ __webpack_require__.r(__webpack_exports__);
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
name: 'OptionsBlock',
components: {
@@ -47479,10 +47542,10 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ "../node_modules/vue-loader/lib/index.js??vue-loader-options!../node_modules/source-map-loader/dist/cjs.js!./vue/text-editor/actions-menu-text-editor.vue?vue&type=script&lang=js&":
-/*!*****************************************************************************************************************************************************************************************!*\
- !*** ../node_modules/vue-loader/lib/index.js??vue-loader-options!../node_modules/source-map-loader/dist/cjs.js!./vue/text-editor/actions-menu-text-editor.vue?vue&type=script&lang=js& ***!
- \*****************************************************************************************************************************************************************************************/
+/***/ "../node_modules/vue-loader/lib/index.js??vue-loader-options!../node_modules/source-map-loader/dist/cjs.js!./vue/summary-popup.vue?vue&type=script&lang=js&":
+/*!******************************************************************************************************************************************************************!*\
+ !*** ../node_modules/vue-loader/lib/index.js??vue-loader-options!../node_modules/source-map-loader/dist/cjs.js!./vue/summary-popup.vue?vue&type=script&lang=js& ***!
+ \******************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
@@ -47491,7 +47554,25 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _lib_l10n_l10n_singleton_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/lib/l10n/l10n-singleton.js */ "./lib/l10n/l10n-singleton.js");
-/* harmony import */ var _vue_text_editor_upload_dtsapi_block_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/vue/text-editor/upload-dtsapi-block.vue */ "./vue/text-editor/upload-dtsapi-block.vue");
+/* harmony import */ var _vue_common_modal_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/vue/common/modal.vue */ "./vue/common/modal.vue");
+/* harmony import */ var _vue_common_waiting_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/vue/common/waiting.vue */ "./vue/common/waiting.vue");
+/* harmony import */ var _vue_options_option_item_block_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/vue/options/option-item-block.vue */ "./vue/options/option-item-block.vue");
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
//
//
//
@@ -47524,6 +47605,112 @@ __webpack_require__.r(__webpack_exports__);
//
//
//
+//
+
+
+
+
+
+
+/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
+ name: 'SummaryPopup',
+ components: {
+ modal: _vue_common_modal_vue__WEBPACK_IMPORTED_MODULE_1__.default,
+ waiting: _vue_common_waiting_vue__WEBPACK_IMPORTED_MODULE_2__.default,
+ optionItemBlock: _vue_options_option_item_block_vue__WEBPACK_IMPORTED_MODULE_3__.default
+ },
+ props: {
+ showModal: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ showOnlyWaiting: {
+ type: Boolean,
+ required: false,
+ default: false
+ }
+ },
+ data () {
+ return {
+ contentAvailable: true,
+ showWaiting: false,
+ showLabelTextOpt: false
+ }
+ },
+ watch: {
+ showModal () {
+ if (!this.showModal) {
+ this.showWaiting = false
+ } else if (this.showOnlyWaiting) {
+ this.startAlign()
+ }
+ }
+ },
+ computed: {
+ l10n () {
+ return _lib_l10n_l10n_singleton_js__WEBPACK_IMPORTED_MODULE_0__.default
+ },
+ originalLangData () {
+ return this.$store.state.alignmentUpdated && this.$textC.originalLangData
+ },
+ targetsLangData () {
+ return this.$store.state.alignmentUpdated && this.$textC.targetsLangData
+ },
+ showSummaryPopupOpt () {
+ return this.$store.state.optionsUpdated && this.$settingsC.options.app.items.showSummaryPopup
+ }
+ },
+ methods: {
+ startAlign () {
+ this.showWaiting = true
+ this.$emit('start-align')
+ }
+ }
+});
+
+
+/***/ }),
+
+/***/ "../node_modules/vue-loader/lib/index.js??vue-loader-options!../node_modules/source-map-loader/dist/cjs.js!./vue/text-editor/actions-menu-text-editor.vue?vue&type=script&lang=js&":
+/*!*****************************************************************************************************************************************************************************************!*\
+ !*** ../node_modules/vue-loader/lib/index.js??vue-loader-options!../node_modules/source-map-loader/dist/cjs.js!./vue/text-editor/actions-menu-text-editor.vue?vue&type=script&lang=js& ***!
+ \*****************************************************************************************************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
+/* harmony export */ });
+/* harmony import */ var _lib_l10n_l10n_singleton_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/lib/l10n/l10n-singleton.js */ "./lib/l10n/l10n-singleton.js");
+/* harmony import */ var _vue_text_editor_upload_dtsapi_block_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/vue/text-editor/upload-dtsapi-block.vue */ "./vue/text-editor/upload-dtsapi-block.vue");
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
@@ -48148,14 +48335,34 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _lib_l10n_l10n_singleton_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/lib/l10n/l10n-singleton.js */ "./lib/l10n/l10n-singleton.js");
/* harmony import */ var _inline_icons_delete_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/inline-icons/delete.svg */ "./inline-icons/delete.svg");
/* harmony import */ var _inline_icons_delete_svg__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_inline_icons_delete_svg__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var _lib_controllers_tokenize_controller_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/lib/controllers/tokenize-controller.js */ "./lib/controllers/tokenize-controller.js");
-/* harmony import */ var _vue_options_option_item_block_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/vue/options/option-item-block.vue */ "./vue/options/option-item-block.vue");
-/* harmony import */ var _vue_text_editor_actions_menu_text_editor_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/vue/text-editor/actions-menu-text-editor.vue */ "./vue/text-editor/actions-menu-text-editor.vue");
-/* harmony import */ var _vue_text_editor_metadata_block_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/vue/text-editor/metadata-block.vue */ "./vue/text-editor/metadata-block.vue");
-/* harmony import */ var _vue_text_editor_tokenize_options_block_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/vue/text-editor/tokenize-options-block.vue */ "./vue/text-editor/tokenize-options-block.vue");
-/* harmony import */ var _vue_text_editor_direction_options_block_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/vue/text-editor/direction-options-block.vue */ "./vue/text-editor/direction-options-block.vue");
-/* harmony import */ var _vue_text_editor_language_options_block_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/vue/text-editor/language-options-block.vue */ "./vue/text-editor/language-options-block.vue");
-/* harmony import */ var _lib_data_langs_langs_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/lib/data/langs/langs.js */ "./lib/data/langs/langs.js");
+/* harmony import */ var _inline_icons_no_metadata_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/inline-icons/no-metadata.svg */ "./inline-icons/no-metadata.svg");
+/* harmony import */ var _inline_icons_no_metadata_svg__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_inline_icons_no_metadata_svg__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _inline_icons_no_lang_detected_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/inline-icons/no-lang-detected.svg */ "./inline-icons/no-lang-detected.svg");
+/* harmony import */ var _inline_icons_no_lang_detected_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_inline_icons_no_lang_detected_svg__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var _inline_icons_plus_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/inline-icons/plus.svg */ "./inline-icons/plus.svg");
+/* harmony import */ var _inline_icons_plus_svg__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_inline_icons_plus_svg__WEBPACK_IMPORTED_MODULE_4__);
+/* harmony import */ var _lib_controllers_tokenize_controller_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/lib/controllers/tokenize-controller.js */ "./lib/controllers/tokenize-controller.js");
+/* harmony import */ var _vue_options_option_item_block_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/vue/options/option-item-block.vue */ "./vue/options/option-item-block.vue");
+/* harmony import */ var _vue_text_editor_actions_menu_text_editor_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/vue/text-editor/actions-menu-text-editor.vue */ "./vue/text-editor/actions-menu-text-editor.vue");
+/* harmony import */ var _vue_text_editor_metadata_block_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/vue/text-editor/metadata-block.vue */ "./vue/text-editor/metadata-block.vue");
+/* harmony import */ var _vue_text_editor_tokenize_options_block_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/vue/text-editor/tokenize-options-block.vue */ "./vue/text-editor/tokenize-options-block.vue");
+/* harmony import */ var _vue_text_editor_direction_options_block_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/vue/text-editor/direction-options-block.vue */ "./vue/text-editor/direction-options-block.vue");
+/* harmony import */ var _vue_text_editor_language_options_block_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/vue/text-editor/language-options-block.vue */ "./vue/text-editor/language-options-block.vue");
+/* harmony import */ var _vue_common_tooltip_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/vue/common/tooltip.vue */ "./vue/common/tooltip.vue");
+/* harmony import */ var _lib_data_langs_langs_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/lib/data/langs/langs.js */ "./lib/data/langs/langs.js");
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
//
//
//
@@ -48203,6 +48410,12 @@ __webpack_require__.r(__webpack_exports__);
//
//
//
+//
+//
+
+
+
+
@@ -48243,12 +48456,16 @@ __webpack_require__.r(__webpack_exports__);
},
components: {
deleteIcon: (_inline_icons_delete_svg__WEBPACK_IMPORTED_MODULE_1___default()),
- optionItemBlock: _vue_options_option_item_block_vue__WEBPACK_IMPORTED_MODULE_3__.default,
- actionsMenu: _vue_text_editor_actions_menu_text_editor_vue__WEBPACK_IMPORTED_MODULE_4__.default,
- metadataBlock: _vue_text_editor_metadata_block_vue__WEBPACK_IMPORTED_MODULE_5__.default,
- tokenizeOptionsBlock: _vue_text_editor_tokenize_options_block_vue__WEBPACK_IMPORTED_MODULE_6__.default,
- directionOptionsBlock: _vue_text_editor_direction_options_block_vue__WEBPACK_IMPORTED_MODULE_7__.default,
- languageOptionsBlock: _vue_text_editor_language_options_block_vue__WEBPACK_IMPORTED_MODULE_8__.default
+ noMetadataIcon: (_inline_icons_no_metadata_svg__WEBPACK_IMPORTED_MODULE_2___default()),
+ noLangDetectedIcon: (_inline_icons_no_lang_detected_svg__WEBPACK_IMPORTED_MODULE_3___default()),
+ plusIcon: (_inline_icons_plus_svg__WEBPACK_IMPORTED_MODULE_4___default()),
+ optionItemBlock: _vue_options_option_item_block_vue__WEBPACK_IMPORTED_MODULE_6__.default,
+ actionsMenu: _vue_text_editor_actions_menu_text_editor_vue__WEBPACK_IMPORTED_MODULE_7__.default,
+ metadataBlock: _vue_text_editor_metadata_block_vue__WEBPACK_IMPORTED_MODULE_8__.default,
+ tokenizeOptionsBlock: _vue_text_editor_tokenize_options_block_vue__WEBPACK_IMPORTED_MODULE_9__.default,
+ directionOptionsBlock: _vue_text_editor_direction_options_block_vue__WEBPACK_IMPORTED_MODULE_10__.default,
+ languageOptionsBlock: _vue_text_editor_language_options_block_vue__WEBPACK_IMPORTED_MODULE_11__.default,
+ tooltip: _vue_common_tooltip_vue__WEBPACK_IMPORTED_MODULE_12__.default
},
data () {
return {
@@ -48259,7 +48476,7 @@ __webpack_require__.r(__webpack_exports__);
showMetadata: false,
showTypeUploadButtons: true,
- showTypeTextBlock: false,
+ showTypeTextBlock: true,
showTextProps: false,
showUploadMenu: false,
showOnlyMetadata: true,
@@ -48388,7 +48605,7 @@ __webpack_require__.r(__webpack_exports__);
return this.$store.state.optionsUpdated && this.$store.state.alignmentUpdated && this.localTextEditorOptions.ready && this.localTextEditorOptions.sourceText.items.sourceType.currentValue
},
tokenization () {
- return _lib_controllers_tokenize_controller_js__WEBPACK_IMPORTED_MODULE_2__.default.defineTextTokenizationOptions(this.$settingsC.tokenizerOptionValue, this.localTextEditorOptions[this.sourceType])
+ return _lib_controllers_tokenize_controller_js__WEBPACK_IMPORTED_MODULE_5__.default.defineTextTokenizationOptions(this.$settingsC.tokenizerOptionValue, this.localTextEditorOptions[this.sourceType])
},
charactersClasses () {
return {
@@ -48408,6 +48625,17 @@ __webpack_require__.r(__webpack_exports__);
updatedLocalOptions () {
return this.updatedLocalOptionsFlag && this.localTextEditorOptions
+ },
+ isEmptyMetadata () {
+ const docSource = this.$textC.getDocSource(this.textType, this.textId)
+ return this.$store.state.alignmentUpdated && docSource && docSource.hasEmptyMetadata
+ },
+ isLanguageDetected () {
+ const docSource = this.$textC.getDocSource(this.textType, this.textId)
+ return this.$store.state.alignmentUpdated && docSource && docSource.detectedLang
+ },
+ showAddTranslation () {
+ return this.$store.state.alignmentUpdated && (this.textType === 'target') && (this.index === (this.$textC.allTargetTextsIds.length - 1))
}
},
methods: {
@@ -48415,7 +48643,6 @@ __webpack_require__.r(__webpack_exports__);
this.showMetadata = false
this.showTypeUploadButtons = true
- this.showTypeTextBlock = false
this.showTextProps = false
this.showUploadMenu = false
this.showOnlyMetadata = true
@@ -48432,7 +48659,6 @@ __webpack_require__.r(__webpack_exports__);
await this.updateText()
this.showTypeUploadButtons = false
- this.showTypeTextBlock = true
this.showOnlyMetadata = true
}
},
@@ -48446,7 +48672,6 @@ __webpack_require__.r(__webpack_exports__);
await this.updateText()
this.showTypeUploadButtons = true
- this.showTypeTextBlock = false
this.showTextProps = false
this.showUploadMenu = false
this.showOnlyMetadata = true
@@ -48474,6 +48699,7 @@ __webpack_require__.r(__webpack_exports__);
await this.$textC[this.updateTextMethod](params, this.textId)
if (this.$textC.checkDetectedProps(this.textType, this.textId) || (this.text && this.text.length > 0)) {
+ this.showTypeUploadButtons = false
this.showTextProps = true
this.showClearTextFlag++
}
@@ -48481,7 +48707,7 @@ __webpack_require__.r(__webpack_exports__);
},
updateDirection () {
- this.localTextEditorOptions.sourceText.items.direction.currentValue = _lib_data_langs_langs_js__WEBPACK_IMPORTED_MODULE_9__.default.defineDirection(this.localTextEditorOptions.sourceText.items.language.currentValue)
+ this.localTextEditorOptions.sourceText.items.direction.currentValue = _lib_data_langs_langs_js__WEBPACK_IMPORTED_MODULE_13__.default.defineDirection(this.localTextEditorOptions.sourceText.items.language.currentValue)
this.$store.commit('incrementOptionsUpdated')
},
@@ -48519,18 +48745,13 @@ __webpack_require__.r(__webpack_exports__);
this.showMetadata = !this.showMetadata
},
- selectTypeText () {
- this.showTypeTextBlock = true
- this.showOnlyMetadata = true
- this.showTypeUploadButtons = false
- },
-
selectUploadText () {
this.showUploadMenu = true
this.showUploadBlockFlag++
this.showOnlyMetadata = true
this.showTypeUploadButtons = false
+ this.showClearTextFlag++
}
}
});
@@ -48551,6 +48772,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export */ });
/* harmony import */ var _vue_text_editor_text_editor_single_block_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/vue/text-editor/text-editor-single-block.vue */ "./vue/text-editor/text-editor-single-block.vue");
/* harmony import */ var _lib_l10n_l10n_singleton_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/lib/l10n/l10n-singleton.js */ "./lib/l10n/l10n-singleton.js");
+/* harmony import */ var _vue_common_tooltip_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/vue/common/tooltip.vue */ "./vue/common/tooltip.vue");
//
//
//
@@ -48578,6 +48800,16 @@ __webpack_require__.r(__webpack_exports__);
//
//
//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+
@@ -48585,7 +48817,8 @@ __webpack_require__.r(__webpack_exports__);
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
name: 'TextEditor',
components: {
- textEditorSingleBlock: _vue_text_editor_text_editor_single_block_vue__WEBPACK_IMPORTED_MODULE_0__.default
+ textEditorSingleBlock: _vue_text_editor_text_editor_single_block_vue__WEBPACK_IMPORTED_MODULE_0__.default,
+ tooltip: _vue_common_tooltip_vue__WEBPACK_IMPORTED_MODULE_2__.default
},
props: {
},
@@ -48617,6 +48850,9 @@ __webpack_require__.r(__webpack_exports__);
*/
l10n () {
return _lib_l10n_l10n_singleton_js__WEBPACK_IMPORTED_MODULE_1__.default
+ },
+ alignAvailable () {
+ return this.$store.state.alignmentUpdated && this.$store.state.optionsUpdated && this.$textC.couldStartAlign && this.$textC.checkSize(this.$settingsC.maxCharactersPerTextValue)
}
},
methods: {
@@ -50790,6 +51026,47 @@ component.options.__file = "vue/options/options-block.vue"
/***/ }),
+/***/ "./vue/summary-popup.vue":
+/*!*******************************!*\
+ !*** ./vue/summary-popup.vue ***!
+ \*******************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
+/* harmony export */ });
+/* harmony import */ var _summary_popup_vue_vue_type_template_id_ab96fd44___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./summary-popup.vue?vue&type=template&id=ab96fd44& */ "./vue/summary-popup.vue?vue&type=template&id=ab96fd44&");
+/* harmony import */ var _summary_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./summary-popup.vue?vue&type=script&lang=js& */ "./vue/summary-popup.vue?vue&type=script&lang=js&");
+/* harmony import */ var _summary_popup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./summary-popup.vue?vue&type=style&index=0&lang=scss& */ "./vue/summary-popup.vue?vue&type=style&index=0&lang=scss&");
+/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "../node_modules/vue-loader/lib/runtime/componentNormalizer.js");
+
+
+
+;
+
+
+/* normalize component */
+
+var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__.default)(
+ _summary_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__.default,
+ _summary_popup_vue_vue_type_template_id_ab96fd44___WEBPACK_IMPORTED_MODULE_0__.render,
+ _summary_popup_vue_vue_type_template_id_ab96fd44___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
+ false,
+ null,
+ null,
+ null
+
+)
+
+/* hot reload */
+if (false) { var api; }
+component.options.__file = "vue/summary-popup.vue"
+/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);
+
+/***/ }),
+
/***/ "./vue/text-editor/actions-menu-text-editor.vue":
/*!******************************************************!*\
!*** ./vue/text-editor/actions-menu-text-editor.vue ***!
@@ -51784,6 +52061,23 @@ __webpack_require__.r(__webpack_exports__);
/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
+/***/ }),
+
+/***/ "./vue/summary-popup.vue?vue&type=style&index=0&lang=scss&":
+/*!*****************************************************************!*\
+ !*** ./vue/summary-popup.vue?vue&type=style&index=0&lang=scss& ***!
+ \*****************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_5_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_5_0_rules_0_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_summary_popup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-5[0].rules[0].use[1]!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-5[0].rules[0].use[2]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./summary-popup.vue?vue&type=style&index=0&lang=scss& */ "../node_modules/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/dist/cjs.js??clonedRuleSet-5[0].rules[0].use[1]!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-5[0].rules[0].use[2]!../node_modules/vue-loader/lib/index.js??vue-loader-options!./vue/summary-popup.vue?vue&type=style&index=0&lang=scss&");
+/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_5_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_5_0_rules_0_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_summary_popup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_5_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_5_0_rules_0_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_summary_popup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
+/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};
+/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_5_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_5_0_rules_0_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_summary_popup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_5_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_clonedRuleSet_5_0_rules_0_use_2_node_modules_vue_loader_lib_index_js_vue_loader_options_summary_popup_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]
+/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
+
+
/***/ }),
/***/ "./vue/text-editor/actions-menu-text-editor.vue?vue&type=style&index=0&lang=scss&":
@@ -52299,6 +52593,22 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
+/***/ "./vue/summary-popup.vue?vue&type=script&lang=js&":
+/*!********************************************************!*\
+ !*** ./vue/summary-popup.vue?vue&type=script&lang=js& ***!
+ \********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
+/* harmony export */ });
+/* harmony import */ var _node_modules_vue_loader_lib_index_js_vue_loader_options_node_modules_source_map_loader_dist_cjs_js_summary_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/vue-loader/lib/index.js??vue-loader-options!../../node_modules/source-map-loader/dist/cjs.js!./summary-popup.vue?vue&type=script&lang=js& */ "../node_modules/vue-loader/lib/index.js??vue-loader-options!../node_modules/source-map-loader/dist/cjs.js!./vue/summary-popup.vue?vue&type=script&lang=js&");
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_vue_loader_lib_index_js_vue_loader_options_node_modules_source_map_loader_dist_cjs_js_summary_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__.default);
+
+/***/ }),
+
/***/ "./vue/text-editor/actions-menu-text-editor.vue?vue&type=script&lang=js&":
/*!*******************************************************************************!*\
!*** ./vue/text-editor/actions-menu-text-editor.vue?vue&type=script&lang=js& ***!
@@ -52839,6 +53149,23 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_options_block_vue_vue_type_template_id_7e2b5386___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./options-block.vue?vue&type=template&id=7e2b5386& */ "../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../node_modules/vue-loader/lib/index.js??vue-loader-options!./vue/options/options-block.vue?vue&type=template&id=7e2b5386&");
+/***/ }),
+
+/***/ "./vue/summary-popup.vue?vue&type=template&id=ab96fd44&":
+/*!**************************************************************!*\
+ !*** ./vue/summary-popup.vue?vue&type=template&id=ab96fd44& ***!
+ \**************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ "render": () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_summary_popup_vue_vue_type_template_id_ab96fd44___WEBPACK_IMPORTED_MODULE_0__.render),
+/* harmony export */ "staticRenderFns": () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_summary_popup_vue_vue_type_template_id_ab96fd44___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)
+/* harmony export */ });
+/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_summary_popup_vue_vue_type_template_id_ab96fd44___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./summary-popup.vue?vue&type=template&id=ab96fd44& */ "../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../node_modules/vue-loader/lib/index.js??vue-loader-options!./vue/summary-popup.vue?vue&type=template&id=ab96fd44&");
+
+
/***/ }),
/***/ "./vue/text-editor/actions-menu-text-editor.vue?vue&type=template&id=04c0dab0&":
@@ -53514,7 +53841,7 @@ var render = function() {
on: {
"download-data": _vm.downloadData,
"upload-data": _vm.uploadData,
- "align-texts": _vm.alignTexts,
+ "align-texts": _vm.showSummaryPopup,
"redo-action": _vm.redoAction,
"undo-action": _vm.undoAction,
"add-target": _vm.addTarget,
@@ -53562,7 +53889,11 @@ var render = function() {
value: _vm.showSourceTextEditorBlock,
expression: "showSourceTextEditorBlock"
}
- ]
+ ],
+ on: {
+ "add-translation": _vm.addTarget,
+ "align-text": _vm.showSummaryPopup
+ }
}),
_vm._v(" "),
_c("align-editor", {
@@ -53586,6 +53917,19 @@ var render = function() {
}
],
attrs: { renderEditor: _vm.renderTokensEditor }
+ }),
+ _vm._v(" "),
+ _c("summary-popup", {
+ attrs: {
+ showModal: _vm.showSummaryModal,
+ showOnlyWaiting: _vm.showOnlyWaitingSummary
+ },
+ on: {
+ closeModal: function($event) {
+ _vm.showSummaryModal = false
+ },
+ "start-align": _vm.alignTexts
+ }
})
],
1
@@ -54958,6 +55302,278 @@ render._withStripped = true
+/***/ }),
+
+/***/ "../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../node_modules/vue-loader/lib/index.js??vue-loader-options!./vue/summary-popup.vue?vue&type=template&id=ab96fd44&":
+/*!*******************************************************************************************************************************************************************************************************!*\
+ !*** ../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../node_modules/vue-loader/lib/index.js??vue-loader-options!./vue/summary-popup.vue?vue&type=template&id=ab96fd44& ***!
+ \*******************************************************************************************************************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ "render": () => (/* binding */ render),
+/* harmony export */ "staticRenderFns": () => (/* binding */ staticRenderFns)
+/* harmony export */ });
+var render = function() {
+ var _vm = this
+ var _h = _vm.$createElement
+ var _c = _vm._self._c || _h
+ return _vm.showModal
+ ? _c("modal", {
+ on: {
+ close: function($event) {
+ return _vm.$emit("closeModal")
+ }
+ },
+ scopedSlots: _vm._u(
+ [
+ {
+ key: "header",
+ fn: function() {
+ return [
+ _c("p", {
+ staticClass: "alpheios-editor-summary-header",
+ domProps: {
+ innerHTML: _vm._s(
+ _vm.l10n.getMsgS("SUMMARY_POPUP_HEADER")
+ )
+ }
+ })
+ ]
+ },
+ proxy: true
+ },
+ _vm.contentAvailable
+ ? {
+ key: "body",
+ fn: function() {
+ return [
+ _c("waiting", {
+ directives: [
+ {
+ name: "show",
+ rawName: "v-show",
+ value: _vm.showWaiting,
+ expression: "showWaiting"
+ }
+ ]
+ }),
+ _vm._v(" "),
+ _c(
+ "div",
+ {
+ directives: [
+ {
+ name: "show",
+ rawName: "v-show",
+ value: !_vm.showWaiting,
+ expression: "!showWaiting"
+ }
+ ],
+ staticClass: "alpheios-editor-summary-content"
+ },
+ [
+ _c(
+ "table",
+ { staticClass: "alpheios-editor-langs-table" },
+ [
+ _c("tr", [
+ _c("th", { attrs: { colspan: "2" } }, [
+ _vm._v(
+ _vm._s(
+ _vm.l10n.getMsgS(
+ "SUMMARY_POPUP_TABEL_TH_ORIGINAL"
+ )
+ )
+ )
+ ]),
+ _vm._v(" "),
+ _c("th", { attrs: { colspan: "2" } }, [
+ _vm._v(
+ _vm._s(
+ _vm.l10n.getMsgS(
+ "SUMMARY_POPUP_TABEL_TH_TRANSLATION"
+ )
+ )
+ )
+ ])
+ ]),
+ _vm._v(" "),
+ _vm._l(_vm.targetsLangData, function(
+ langData,
+ langIndex
+ ) {
+ return _c("tr", { key: langIndex }, [
+ langIndex > 0
+ ? _c("td", { attrs: { colspan: "2" } })
+ : _vm._e(),
+ _vm._v(" "),
+ langIndex === 0
+ ? _c("td", [
+ _vm._v(
+ "\n " +
+ _vm._s(
+ _vm.originalLangData.textPart
+ ) +
+ "\n "
+ )
+ ])
+ : _vm._e(),
+ _vm._v(" "),
+ langIndex === 0
+ ? _c(
+ "td",
+ {
+ staticClass:
+ "alpheios-editor-langs-table_lang"
+ },
+ [
+ _vm._v(
+ "\n " +
+ _vm._s(
+ _vm.originalLangData.langName
+ ) +
+ "\n "
+ )
+ ]
+ )
+ : _vm._e(),
+ _vm._v(" "),
+ _c("td", [
+ _vm._v(
+ "\n " +
+ _vm._s(langData.textPart) +
+ "\n "
+ )
+ ]),
+ _vm._v(" "),
+ _c(
+ "td",
+ {
+ staticClass:
+ "alpheios-editor-langs-table_lang"
+ },
+ [
+ _vm._v(
+ "\n " +
+ _vm._s(langData.langName) +
+ "\n "
+ )
+ ]
+ )
+ ])
+ })
+ ],
+ 2
+ ),
+ _vm._v(" "),
+ _c(
+ "div",
+ {
+ staticClass: "alpheios-editor-summary-show-option"
+ },
+ [
+ _c(
+ "span",
+ {
+ staticClass:
+ "alpheios-editor-summary-show-option-item"
+ },
+ [
+ _c("option-item-block", {
+ attrs: {
+ optionItem: _vm.showSummaryPopupOpt,
+ showLabelText: _vm.showLabelTextOpt
+ }
+ })
+ ],
+ 1
+ ),
+ _vm._v(" "),
+ _c(
+ "span",
+ {
+ staticClass:
+ "alpheios-editor-summary-show-option-label"
+ },
+ [
+ _vm._v(
+ _vm._s(
+ _vm.l10n.getMsgS(
+ "SUMMARY_POPUP_SHOW_OPTION_LABEL"
+ )
+ )
+ )
+ ]
+ )
+ ]
+ )
+ ]
+ )
+ ]
+ },
+ proxy: true
+ }
+ : null,
+ {
+ key: "footer",
+ fn: function() {
+ return [
+ _c("div", { staticClass: "alpheios-editor-summary-footer" }, [
+ _c(
+ "button",
+ {
+ staticClass:
+ "alpheios-editor-button-tertiary alpheios-actions-menu-button",
+ attrs: { disabled: _vm.showWaiting },
+ on: { click: _vm.startAlign }
+ },
+ [
+ _vm._v(
+ _vm._s(_vm.l10n.getMsgS("SUMMARY_POPUP_OK_BUTTON"))
+ )
+ ]
+ ),
+ _vm._v(" "),
+ _c(
+ "button",
+ {
+ staticClass:
+ "alpheios-editor-button-tertiary alpheios-actions-menu-button",
+ attrs: { disabled: _vm.showWaiting },
+ on: {
+ click: function($event) {
+ return _vm.$emit("closeModal")
+ }
+ }
+ },
+ [
+ _vm._v(
+ _vm._s(
+ _vm.l10n.getMsgS("SUMMARY_POPUP_CANCEL_BUTTON")
+ )
+ )
+ ]
+ )
+ ])
+ ]
+ },
+ proxy: true
+ }
+ ],
+ null,
+ true
+ )
+ })
+ : _vm._e()
+}
+var staticRenderFns = []
+render._withStripped = true
+
+
+
/***/ }),
/***/ "../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../node_modules/vue-loader/lib/index.js??vue-loader-options!./vue/text-editor/actions-menu-text-editor.vue?vue&type=template&id=04c0dab0&":
@@ -55682,9 +56298,38 @@ var render = function() {
"p",
{ staticClass: "alpheios-alignment-editor-text-blocks-single__title" },
[
- _vm._v(
- _vm._s(_vm.indexData) + _vm._s(_vm.textBlockTitle) + "\n "
+ _c(
+ "span",
+ {
+ staticClass:
+ "alpheios-alignment-editor-text-blocks-single__title-text"
+ },
+ [_vm._v(_vm._s(_vm.indexData) + _vm._s(_vm.textBlockTitle))]
),
+ _vm._v(" "),
+ _c(
+ "span",
+ {
+ directives: [
+ {
+ name: "show",
+ rawName: "v-show",
+ value: _vm.showAddTranslation,
+ expression: "showAddTranslation"
+ }
+ ],
+ staticClass: "alpheios-alignment-editor-add-translation",
+ attrs: { id: "alpheios-alignment-editor-add-translation" },
+ on: {
+ click: function($event) {
+ return _vm.$emit("add-translation")
+ }
+ }
+ },
+ [_c("plus-icon")],
+ 1
+ ),
+ _vm._v(" "),
_c(
"span",
{
@@ -55721,20 +56366,12 @@ var render = function() {
},
[
_c(
- "button",
+ "span",
{
staticClass:
- "alpheios-editor-button-tertiary alpheios-actions-menu-button",
- attrs: { id: "alpheios-actions-menu-button__typetext" },
- on: { click: _vm.selectTypeText }
+ "alpheios-alignment-editor-text-blocks-single__type-label"
},
- [
- _vm._v(
- "\n " +
- _vm._s(_vm.l10n.getMsgS("TEXT_SINGLE_TYPE_BUTTON")) +
- "\n "
- )
- ]
+ [_vm._v(_vm._s(_vm.l10n.getMsgS("TEXT_SINGLE_TYPE_LABEL")))]
),
_vm._v(" "),
_c(
@@ -55807,11 +56444,96 @@ var render = function() {
_c(
"p",
{
- staticClass:
- "alpheios-alignment-editor-text-blocks-single__characters",
+ staticClass: "alpheios-alignment-editor-text-blocks-info-line",
class: _vm.charactersClasses
},
- [_vm._v("\n " + _vm._s(_vm.charactersText) + "\n ")]
+ [
+ _c(
+ "span",
+ {
+ staticClass:
+ "alpheios-alignment-editor-text-blocks-single__characters"
+ },
+ [_vm._v(_vm._s(_vm.charactersText))]
+ ),
+ _vm._v(" "),
+ _c(
+ "span",
+ {
+ directives: [
+ {
+ name: "show",
+ rawName: "v-show",
+ value: _vm.showTextProps,
+ expression: "showTextProps"
+ }
+ ],
+ staticClass:
+ "alpheios-alignment-editor-text-blocks-single__lang-icon"
+ },
+ [_vm._v("\n " + _vm._s(_vm.language) + "\n ")]
+ ),
+ _vm._v(" "),
+ _c(
+ "span",
+ {
+ directives: [
+ {
+ name: "show",
+ rawName: "v-show",
+ value: _vm.showTextProps && !_vm.isLanguageDetected,
+ expression: "showTextProps && !isLanguageDetected"
+ }
+ ],
+ staticClass:
+ "alpheios-alignment-editor-text-blocks-single__icons"
+ },
+ [
+ _c(
+ "tooltip",
+ {
+ attrs: {
+ tooltipText: _vm.l10n.getMsgS("NO_LANG_DETECTED_ICON"),
+ tooltipDirection: "top"
+ }
+ },
+ [_c("no-lang-detected-icon")],
+ 1
+ )
+ ],
+ 1
+ ),
+ _vm._v(" "),
+ _c(
+ "span",
+ {
+ directives: [
+ {
+ name: "show",
+ rawName: "v-show",
+ value: _vm.isEmptyMetadata,
+ expression: "isEmptyMetadata"
+ }
+ ],
+ staticClass:
+ "alpheios-alignment-editor-text-blocks-single__icons"
+ },
+ [
+ _c(
+ "tooltip",
+ {
+ attrs: {
+ tooltipText: _vm.l10n.getMsgS("NO_METADATA_ICON"),
+ tooltipDirection: "top"
+ }
+ },
+ [_c("no-metadata-icon")],
+ 1
+ )
+ ],
+ 1
+ )
+ ]
),
_vm._v(" "),
_c(
@@ -55936,7 +56658,56 @@ var render = function() {
_c(
"h2",
{ staticClass: "alpheios-alignment-text-editor-block__header" },
- [_vm._v(_vm._s(_vm.l10n.getMsgS("TEXT_EDITOR_HEADING")) + " ")]
+ [
+ _c(
+ "span",
+ {
+ staticClass: "alpheios-alignment-text-editor-block__header-label"
+ },
+ [_vm._v(_vm._s(_vm.l10n.getMsgS("TEXT_EDITOR_HEADING")))]
+ ),
+ _vm._v(" "),
+ _c(
+ "tooltip",
+ {
+ attrs: {
+ tooltipText: _vm.l10n.getMsgS("ALIGN_TEXT_BUTTON_TOOLTIP"),
+ tooltipDirection: "bottom"
+ }
+ },
+ [
+ _c(
+ "button",
+ {
+ directives: [
+ {
+ name: "show",
+ rawName: "v-show",
+ value: _vm.alignAvailable,
+ expression: "alignAvailable"
+ }
+ ],
+ staticClass:
+ "alpheios-editor-button-tertiary alpheios-actions-menu-button",
+ attrs: { id: "alpheios-actions-menu-button__align" },
+ on: {
+ click: function($event) {
+ return _vm.$emit("align-text")
+ }
+ }
+ },
+ [
+ _vm._v(
+ "\n " +
+ _vm._s(_vm.l10n.getMsgS("MAIN_MENU_ALIGN_TITLE")) +
+ "\n "
+ )
+ ]
+ )
+ ]
+ )
+ ],
+ 1
),
_vm._v(" "),
_c(
@@ -55984,6 +56755,11 @@ var render = function() {
"text-type": "target",
"text-id": targetTextId && targetTextId.targetId,
index: targetTextId && targetTextId.targetIndex
+ },
+ on: {
+ "add-translation": function($event) {
+ return _vm.$emit("add-translation")
+ }
}
})
}),
@@ -57760,6 +58536,80 @@ render._withStripped = true
}
+/***/ }),
+
+/***/ "./inline-icons/no-lang-detected.svg":
+/*!*******************************************!*\
+ !*** ./inline-icons/no-lang-detected.svg ***!
+ \*******************************************/
+/***/ ((module) => {
+
+
+ module.exports = {
+ functional: true,
+ render(_h, _vm) {
+ const { _c, _v, data, children = [] } = _vm;
+
+ const {
+ class: classNames,
+ staticClass,
+ style,
+ staticStyle,
+ attrs = {},
+ ...rest
+ } = data;
+
+ return _c(
+ 'svg',
+ {
+ class: [classNames,staticClass],
+ style: [style,staticStyle],
+ attrs: Object.assign({"width":"1005.9","height":"1005.9","viewBox":"0 0 266.14 266.14","xmlns":"http://www.w3.org/2000/svg"}, attrs),
+ ...rest,
+ },
+ children.concat([_c('path',{attrs:{"d":"M44.59 210.391l-.684-.684.068-62.872.067-62.872.602-.487c.331-.268 4.826-1.894 9.988-3.612l9.386-3.125c46.585-15.11 35.121-10.919 64.725-21.576 47.38 15.521 55.912 18.131 76.695 25.781l16.797 5.315.002 62.272c.002 52.33-.055 62.25-.357 62.134-.197-.076-9.354-3.004-20.349-6.507a79133.093 79133.093 0 01-62.689-19.988l-6.006-1.923-12.78 4.33c-25.96 8.798-72.518 24.19-73.631 24.342-.997.137-1.24.067-1.834-.526zm44.497-18.194l40.018-13.333v-59.466c0-32.706-.09-59.466-.198-59.466-.11 0-18.266 6.023-40.35 13.384L48.408 86.7v59.538c0 47.519.066 59.513.33 59.416.182-.067 18.34-6.122 40.35-13.455zM61.372 173.44c0-.09.43-.572.956-1.074 1.72-1.64 8.859-10.093 11.609-13.744 3.894-5.17 9.839-13.524 12.995-18.26 2.058-3.09 3.982-6.579 7.77-14.088 2.769-5.49 5.035-10.115 5.035-10.278 0-.394-1.272-.144-4.76.938-7.898 2.448-10.992 3.374-13.768 4.119-1.677.45-3.215.921-3.418 1.047s-.44.745-.523 1.376c-.146 1.089-.232 1.186-1.722 1.93-1.32.66-1.961.801-4.045.892-2.997.131-4.369-.299-5.718-1.792-.807-.893-1.544-2.97-1.183-3.332.058-.058 1.26-.29 2.67-.518 2.965-.477 10.324-2.6 17.068-4.923 2.576-.887 6.41-2.186 8.52-2.885 2.336-.775 5.165-1.968 7.236-3.052 3.86-2.021 9.187-4.163 9.528-3.831.125.122.143 1.066.039 2.099-.17 1.7-.508 2.522-3.562 8.689-3.554 7.177-5.938 11.47-9.659 17.4-1.242 1.981-2.256 3.683-2.253 3.783.008.195 3.405 1.682 15.736 6.885 4.366 1.843 8.073 3.438 8.239 3.545.337.22 1.343 3.8 1.47 5.229.078.895.052.924-.772.86-.47-.037-1.754-.425-2.855-.862-5.902-2.344-12.242-6.043-18.027-10.516-2.494-1.928-4.662-3.506-4.818-3.506-.156 0-.409.234-.562.52-.512.957-5.103 7.516-7.508 10.725-6.907 9.219-15.54 19.105-18.747 21.47-1.027.756-1.575.953-3.109 1.117-1.024.11-1.862.126-1.862.037zm19.065-66.692c-2.611-1.185-4.492-3.516-5.2-6.444-.166-.686-.13-.748.317-.559.276.117 1.514.265 2.751.328 2.11.109 2.562.026 7.326-1.345 8.434-2.428 9.322-2.501 10.022-.827 1.118 2.677-.445 5.32-4.366 7.38-3.658 1.922-8.426 2.567-10.85 1.467zm123.56 64.243c-.26-.91-4.974-17.906-10.476-37.769-5.502-19.864-10.079-36.205-10.172-36.314-.29-.342-11.493-3.639-11.672-3.435-.462.525-25.111 61.552-24.928 61.72.209.193 10.331 3.307 11.293 3.475.421.074.903-.882 3.094-6.13 2.142-5.131 2.68-6.203 3.074-6.132 1.348.245 23.538 7.057 23.783 7.301.157.157 1.214 3.695 2.35 7.863l2.063 7.578 4.53 1.367c2.49.751 5.005 1.529 5.587 1.728 1.972.673 2.014.637 1.475-1.251zm-27.999-34.027c-4.111-1.258-7.474-2.376-7.474-2.485 0-.342 8.24-20.161 8.492-20.426.148-.156.239-.108.239.126 0 .208 1.548 5.87 3.44 12.58 1.891 6.711 3.439 12.28 3.439 12.375 0 .3-.494.168-8.136-2.17zm-4.81-67.505c16.59 5.295 29.307 10.016 29.416 10.029-39.856-12.516-90.82-29.307-29.416-10.029z","fill":"red","fill-opacity":".66"}}),_c('g',{attrs:{"fill":"none","stroke":"red"}},[_c('path',{attrs:{"d":"M262.45 133.073a129.36 129.36 0 01-129.361 129.36 129.36 129.36 0 01-129.36-129.36 129.36 129.36 0 01129.36-129.36 129.36 129.36 0 01129.36 129.36z","opacity":".99","stroke-linecap":"round","stroke-width":"7.426433"}}),_c('path',{attrs:{"d":"M41.657 41.426l183.31 183.31","stroke-width":"7.342"}})])])
+ )
+ }
+ }
+
+
+/***/ }),
+
+/***/ "./inline-icons/no-metadata.svg":
+/*!**************************************!*\
+ !*** ./inline-icons/no-metadata.svg ***!
+ \**************************************/
+/***/ ((module) => {
+
+
+ module.exports = {
+ functional: true,
+ render(_h, _vm) {
+ const { _c, _v, data, children = [] } = _vm;
+
+ const {
+ class: classNames,
+ staticClass,
+ style,
+ staticStyle,
+ attrs = {},
+ ...rest
+ } = data;
+
+ return _c(
+ 'svg',
+ {
+ class: [classNames,staticClass],
+ style: [style,staticStyle],
+ attrs: Object.assign({"width":"548.03","height":"548.03","viewBox":"0 0 145 145","xmlns":"http://www.w3.org/2000/svg"}, attrs),
+ ...rest,
+ },
+ children.concat([_c('path',{attrs:{"d":"M22.334 103.21c-1.06-.57-1.007 1.07-1.015-31.426-.007-32.885-.071-31.03 1.087-31.543.313-.138 1.487-.232 2.914-.232h2.39v-2.223c0-2.5.177-3.07 1.078-3.469.71-.314 25.783-3.213 29.214-3.378 4.372-.21 10.074.86 13.746 2.58.723.338.776.338 1.5 0 3.673-1.72 9.378-2.79 13.745-2.579 3.458.168 28.508 3.063 29.214 3.377.901.4 1.078.969 1.078 3.469v2.223h2.39c1.427 0 2.6.094 2.914.232 1.158.512 1.094-1.336 1.094 31.504s.064 30.991-1.094 31.504c-.812.36-99.588.32-100.26-.039zm97.551-31.465V43.697h-2.6l-.002 25.281c-.003 19.833-.057 25.385-.253 25.761-.61 1.17.032 1.192-15.361-.547-8.403-.95-14.84-1.588-15.975-1.585-3.652.01-7.56.84-10.967 2.33-.98.428-1.983.778-2.23.778-.245 0-1.248-.35-2.228-.779-3.408-1.49-7.316-2.32-10.967-2.33-1.134-.003-7.572.637-15.975 1.586-15.393 1.74-14.751 1.717-15.361.547-.196-.376-.25-5.929-.253-25.761l-.003-25.281H25.11v56.095h94.776zm-76.02 18.723c6.566-.751 12.748-1.418 13.738-1.48 3.328-.213 8.283.49 11.778 1.671.65.22 1.212.399 1.25.399.038 0 .068-12.14.068-26.976V37.106l-.75-.37c-.94-.464-3.709-1.316-5.548-1.709-.77-.164-2.704-.34-4.298-.393-2.676-.087-3.835.012-14.995 1.283-6.653.758-12.433 1.429-12.846 1.49l-.75.113v27.157c0 18.641.065 27.157.207 27.157.115 0 5.58-.615 12.146-1.366zM34.97 79.65c-.945-.721-.92-2.266.048-2.882.554-.352 18.417-2.48 22.803-2.717 4.026-.217 9.487.643 10.277 1.618.8.988.264 2.602-.95 2.858-.302.063-1.358-.065-2.347-.285-1.14-.253-2.863-.439-4.699-.507-2.683-.099-3.668-.019-13.196 1.076-5.663.651-10.567 1.181-10.896 1.179-.33-.003-.798-.156-1.04-.34zm.203-8.234c-.655-.307-1.057-1.247-.843-1.97.388-1.315.058-1.24 10.808-2.483 5.426-.628 11.08-1.197 12.565-1.264 4.446-.202 9.443.56 10.343 1.576.526.593.596 1.566.157 2.174-.52.722-1.232.82-3.102.426-1.035-.218-2.989-.403-4.999-.474-3.171-.112-3.694-.07-13.537 1.065-5.63.65-10.399 1.176-10.597 1.168-.197-.006-.555-.105-.795-.218zm.237-8.298c-1.598-.635-1.459-2.986.2-3.39.255-.063 5.096-.638 10.758-1.279 12.63-1.43 14.719-1.479 19.495-.462 1.9.405 2.637.975 2.637 2.04 0 .557-.135.9-.49 1.245-.582.565-1.397.61-3.259.185-1.857-.426-5.872-.662-8.047-.474-1.045.09-6.152.649-11.35 1.241-5.198.592-9.471 1.072-9.497 1.065a11.766 11.766 0 01-.447-.171zm.104-8.38c-.876-.339-1.204-.767-1.204-1.573 0-.967.244-1.4.942-1.678.307-.121 5.146-.748 10.754-1.393 12.691-1.46 15.152-1.517 20.013-.467 1.86.402 2.481.887 2.481 1.937 0 .519-.154.853-.584 1.27-.668.649-1.136.695-2.915.288-2.052-.468-5.29-.732-7.298-.595-1.59.109-19.208 2.043-21.094 2.316-.33.047-.823 0-1.095-.105zm-.713-8.8c-.791-.769-.623-2.34.302-2.82.357-.186 18.713-2.338 22.332-2.618 2.632-.204 8.036.395 9.923 1.1 1.261.472 1.543 1.931.557 2.888-.7.68-.88.687-3.483.14-3.523-.74-6.875-.611-18.065.69-5.19.603-9.805 1.096-10.256 1.096-.603 0-.949-.125-1.31-.476zm78.686 18.739V37.52l-.75-.113c-.412-.062-6.193-.733-12.846-1.49-11.16-1.272-12.32-1.37-14.995-1.283-1.594.052-3.529.229-4.299.393-1.839.392-4.608 1.245-5.548 1.709l-.75.37V64.08c0 14.837.028 26.976.063 26.976s.864-.263 1.844-.585c3.328-1.091 5.758-1.443 9.79-1.415 3.135.021 5.066.2 14.994 1.38 6.268.746 11.644 1.365 11.947 1.376l.55.02zM98.691 78.88c-7.938-.957-9.318-1.074-12.796-1.084-3.348-.01-4.161.049-5.755.415-1.021.235-2.07.375-2.33.312-1.32-.322-1.824-2.003-.878-2.922.985-.956 6.255-1.764 10.16-1.559 1.915.101 19.404 2.003 21.835 2.374 1.674.257 2.317 1.902 1.177 3.01-.494.479-.735.564-1.55.546-.53-.01-4.969-.503-9.863-1.092zm-.5-8.426c-9.335-1.097-9.957-1.146-13.196-1.054-2.33.066-3.956.217-5.17.48-1.86.402-2.373.35-2.95-.298-.897-1.01-.489-2.379.852-2.857 1.987-.709 4.36-.994 8.168-.982 3.2.01 4.98.16 13.196 1.112 5.223.606 9.831 1.192 10.24 1.302 1.437.389 1.834 1.89.772 2.922-.455.442-.753.563-1.35.546-.42-.011-5.173-.539-10.561-1.171zm.4-8.344c-10.738-1.28-14.106-1.446-17.295-.849-2.839.532-3.537.57-4.078.227-.73-.465-1.023-1.508-.63-2.246.41-.77.624-.866 3.108-1.406 1.845-.4 2.596-.454 6.199-.444 3.701.011 5.01.12 13.496 1.115 5.168.607 9.644 1.154 9.944 1.216 1.073.222 1.69 1.631 1.146 2.618-.26.47-1.23.967-1.833.936-.253-.013-4.779-.538-10.057-1.167zm.3-8.331c-13.56-1.576-13.837-1.583-19.63-.543-1.636.293-2.25.086-2.677-.905-.596-1.386.111-2.215 2.303-2.7 4.793-1.058 7.293-1 20.004.46 5.664.652 10.452 1.23 10.642 1.288.92.277 1.437 1.73.939 2.633-.198.36-1.357.975-1.727.918-.086-.014-4.52-.532-9.854-1.151zm-.5-8.467c-10.813-1.295-14.358-1.426-18.04-.67-2.638.543-3.303.421-3.781-.69-.332-.77-.199-1.432.398-1.976.943-.86 7.15-1.733 10.52-1.48.938.071 6.247.642 11.797 1.27 8.363.945 10.177 1.203 10.597 1.506.966.699 1.042 1.955.166 2.748-.622.562-1.483.51-11.656-.708z","fill":"none","stroke":"red","stroke-width":"1.391"}}),_c('path',{attrs:{"d":"M142.98 72.5a70.477 70.477 0 01-70.477 70.477A70.477 70.477 0 012.026 72.5 70.477 70.477 0 0172.503 2.023 70.477 70.477 0 01142.98 72.5z","fill":"none","opacity":".99","stroke":"red","stroke-linecap":"round","stroke-width":"4.046"}}),_c('path',{attrs:{"d":"M22.689 22.57l99.869 99.869","fill":"none","stroke":"red","stroke-width":"4"}})])
+ )
+ }
+ }
+
+
/***/ }),
/***/ "./inline-icons/pen.svg":
@@ -57797,6 +58647,43 @@ render._withStripped = true
}
+/***/ }),
+
+/***/ "./inline-icons/plus.svg":
+/*!*******************************!*\
+ !*** ./inline-icons/plus.svg ***!
+ \*******************************/
+/***/ ((module) => {
+
+
+ module.exports = {
+ functional: true,
+ render(_h, _vm) {
+ const { _c, _v, data, children = [] } = _vm;
+
+ const {
+ class: classNames,
+ staticClass,
+ style,
+ staticStyle,
+ attrs = {},
+ ...rest
+ } = data;
+
+ return _c(
+ 'svg',
+ {
+ class: [classNames,staticClass],
+ style: [style,staticStyle],
+ attrs: Object.assign({"width":"300","height":"300","viewBox":"0 0 79.375 79.375","xmlns":"http://www.w3.org/2000/svg"}, attrs),
+ ...rest,
+ },
+ children.concat([_c('ellipse',{attrs:{"cx":"39.688","cy":"39.688","rx":"36.67","ry":"35.795","fill":"none","opacity":".99","stroke":"#000","stroke-linecap":"round","stroke-width":"3.748"}}),_c('path',{attrs:{"d":"M44.237 44.986v16.16q0 1.041-.407 1.448-.363.408-1.404.408h-6.428q-1.04 0-1.448-.407-.362-.408-.362-1.449v-16.16H18.073q-1.041 0-1.449-.407t-.407-1.494v-5.93q0-1.087.407-1.494t1.449-.407h16.115V18.867q0-1.042.362-1.449.407-.407 1.448-.407h6.428q1.041 0 1.404.407.407.407.407 1.449v16.387h16.387q1.086 0 1.494.407t.407 1.494v5.93q0 1.086-.407 1.494t-1.494.407z"}})])
+ )
+ }
+ }
+
+
/***/ }),
/***/ "./inline-icons/prev.svg":
@@ -58105,7 +58992,7 @@ module.exports = JSON.parse('{"DOWNLOAD_CONTROLLER_ERROR_TYPE":{"message":"Downl
/***/ ((module) => {
"use strict";
-module.exports = JSON.parse('{"LANG_ENG":{"message":"English","description":"Language name for available languages list","component":"TextEditor"},"LANG_LAT":{"message":"Latin","description":"Language name for available languages list","component":"TextEditor"},"LANG_GRC":{"message":"Greek (Ancient –1453)","description":"Language name for available languages list","component":"TextEditor"},"LANG_ARA":{"message":"Arabic","description":"Language name for available languages list","component":"TextEditor"},"LANG_ZH":{"message":"Chinese","description":"Language name for available languages list","component":"TextEditor"},"LANG_ZHO":{"message":"Chinese","description":"Language name for available languages list","component":"TextEditor"},"LANG_AAR":{"message":"Afar","description":"Language name for available languages list","component":"TextEditor"},"LANG_ABK":{"message":"Abkhazian","description":"Language name for available languages list","component":"TextEditor"},"LANG_AKA":{"message":"Akan","description":"Language name for available languages list","component":"TextEditor"},"LANG_AFR":{"message":"Afrikaans","description":"Language name for available languages list","component":"TextEditor"},"LANG_AKK":{"message":"Akkadian","description":"Language name for available languages list","component":"TextEditor"},"LANG_SQI":{"message":"Albanian","description":"Language name for available languages list","component":"TextEditor"},"LANG_AMH":{"message":"Amharic","description":"Language name for available languages list","component":"TextEditor"},"LANG_ARG":{"message":"Aragonese","description":"Language name for available languages list","component":"TextEditor"},"LANG_ARC":{"message":"Aramaic (Imperial- 700 BC–300 BC)","description":"Language name for available languages list","component":"TextEditor"},"LANG_SAM":{"message":"Aramaic (Samaritan)","description":"Language name for available languages list","component":"TextEditor"},"LANG_HYE":{"message":"Armenian","description":"Language name for available languages list","component":"TextEditor"},"LANG_ASM":{"message":"Assamese","description":"Language name for available languages list","component":"TextEditor"},"LANG_AST":{"message":"Asturian","description":"Language name for available languages list","component":"TextEditor"},"LANG_AVE":{"message":"Avestan","description":"Language name for available languages list","component":"TextEditor"},"LANG_AYM":{"message":"Aymara","description":"Language name for available languages list","component":"TextEditor"},"LANG_AZE":{"message":"Azerbaijani","description":"Language name for available languages list","component":"TextEditor"},"LANG_EUS":{"message":"Basque","description":"Language name for available languages list","component":"TextEditor"},"LANG_BAK":{"message":"Bashkir","description":"Language name for available languages list","component":"TextEditor"},"LANG_BEL":{"message":"Belarusian","description":"Language name for available languages list","component":"TextEditor"},"LANG_BEN":{"message":"Bengali","description":"Language name for available languages list","component":"TextEditor"},"LANG_BER":{"message":"Berber","description":"Language name for available languages list","component":"TextEditor"},"LANG_BIH":{"message":"Bihari","description":"Language name for available languages list","component":"TextEditor"},"LANG_BIS":{"message":"Bislama","description":"Language name for available languages list","component":"TextEditor"},"LANG_BOS":{"message":"Bosnian","description":"Language name for available languages list","component":"TextEditor"},"LANG_BRE":{"message":"Breton","description":"Language name for available languages list","component":"TextEditor"},"LANG_BUL":{"message":"Bulgarian","description":"Language name for available languages list","component":"TextEditor"},"LANG_BUG":{"message":"Buginese","description":"Language name for available languages list","component":"TextEditor"},"LANG_CHU":{"message":"Bulgarian (Old, Old Church Slavonic)","description":"Language name for available languages list","component":"TextEditor"},"LANG_MYA":{"message":"Burmese","description":"Language name for available languages list","component":"TextEditor"},"LANG_CAT":{"message":"Catalan","description":"Language name for available languages list","component":"TextEditor"},"LANG_CEB":{"message":"Cebuano","description":"Language name for available languages list","component":"TextEditor"},"LANG_CHG":{"message":"Chagatai","description":"Language name for available languages list","component":"TextEditor"},"LANG_CHR":{"message":"Cherokee","description":"Language name for available languages list","component":"TextEditor"},"LANG_COP":{"message":"Coptic","description":"Language name for available languages list","component":"TextEditor"},"LANG_COR":{"message":"Cornish","description":"Language name for available languages list","component":"TextEditor"},"LANG_COS":{"message":"Corsican","description":"Language name for available languages list","component":"TextEditor"},"LANG_CRS":{"message":"Seselwa","description":"Language name for available languages list","component":"TextEditor"},"LANG_HRV":{"message":"Croatian","description":"Language name for available languages list","component":"TextEditor"},"LANG_CES":{"message":"Czech","description":"Language name for available languages list","component":"TextEditor"},"LANG_DAN":{"message":"Danish","description":"Language name for available languages list","component":"TextEditor"},"LANG_DIV":{"message":"Dhivehi","description":"Language name for available languages list","component":"TextEditor"},"LANG_DZO":{"message":"Dzongkha","description":"Language name for available languages list","component":"TextEditor"},"LANG_NLD":{"message":"Dutch (Flemish)","description":"Language name for available languages list","component":"TextEditor"},"LANG_DUM":{"message":"Dutch (Middle, 1050–1350)","description":"Language name for available languages list","component":"TextEditor"},"LANG_EGY":{"message":"Egyptian (Ancient)","description":"Language name for available languages list","component":"TextEditor"},"LANG_ELX":{"message":"Elamite","description":"Language name for available languages list","component":"TextEditor"},"LANG_ENM":{"message":"English (Middle, 1100–1500)","description":"Language name for available languages list","component":"TextEditor"},"LANG_ANG":{"message":"English (Old, 450–1100)","description":"Language name for available languages list","component":"TextEditor"},"LANG_EST":{"message":"Estonian","description":"Language name for available languages list","component":"TextEditor"},"LANG_EPO":{"message":"Esperanto","description":"Language name for available languages list","component":"TextEditor"},"LANG_FAO":{"message":"Faroese","description":"Language name for available languages list","component":"TextEditor"},"LANG_FIJ":{"message":"Fijian","description":"Language name for available languages list","component":"TextEditor"},"LANG_FIN":{"message":"Finnish","description":"Language name for available languages list","component":"TextEditor"},"LANG_FRA":{"message":"French","description":"Language name for available languages list","component":"TextEditor"},"LANG_FRM":{"message":"French (Middle, 1400—1600)","description":"Language name for available languages list","component":"TextEditor"},"LANG_FRO":{"message":"French (Old, 842—c. 1400)","description":"Language name for available languages list","component":"TextEditor"},"LANG_FRR":{"message":"Frisian","description":"Language name for available languages list","component":"TextEditor"},"LANG_GLG":{"message":"Galician","description":"Language name for available languages list","component":"TextEditor"},"LANG_GRN":{"message":"Guarani","description":"Language name for available languages list","component":"TextEditor"},"LANG_GEZ":{"message":"Ge\'ez","description":"Language name for available languages list","component":"TextEditor"},"LANG_HAT":{"message":"Haitian Creole","description":"Language name for available languages list","component":"TextEditor"},"LANG_HAU":{"message":"Hausa","description":"Language name for available languages list","component":"TextEditor"},"LANG_HAW":{"message":"Hawaiian","description":"Language name for available languages list","component":"TextEditor"},"LANG_HMN":{"message":"Hmong","description":"Language name for available languages list","component":"TextEditor"},"LANG_LUG":{"message":"Ganda","description":"Language name for available languages list","component":"TextEditor"},"LANG_KAT":{"message":"Georgian","description":"Language name for available languages list","component":"TextEditor"},"LANG_NDS":{"message":"German (Low, Low Saxon)","description":"Language name for available languages list","component":"TextEditor"},"LANG_GMH":{"message":"German (Middle-High, 1050–1500)","description":"Language name for available languages list","component":"TextEditor"},"LANG_GOH":{"message":"German (Old-High, 750–1050)","description":"Language name for available languages list","component":"TextEditor"},"LANG_DEU":{"message":"German","description":"Language name for available languages list","component":"TextEditor"},"LANG_GOT":{"message":"Gothic","description":"Language name for available languages list","component":"TextEditor"},"LANG_ELL":{"message":"Greek (Modern, 1453–)","description":"Language name for available languages list","component":"TextEditor"},"LANG_KAL":{"message":"Greenlandic","description":"Language name for available languages list","component":"TextEditor"},"LANG_GUJ":{"message":"Gujarati","description":"Language name for available languages list","component":"TextEditor"},"LANG_HEB":{"message":"Hebrew","description":"Language name for available languages list","component":"TextEditor"},"LANG_HIN":{"message":"Hindi","description":"Language name for available languages list","component":"TextEditor"},"LANG_HIT":{"message":"Hittite","description":"Language name for available languages list","component":"TextEditor"},"LANG_HUN":{"message":"Hungarian","description":"Language name for available languages list","component":"TextEditor"},"LANG_IBO":{"message":"Igbo","description":"Language name for available languages list","component":"TextEditor"},"LANG_ISL":{"message":"Icelandic","description":"Language name for available languages list","component":"TextEditor"},"LANG_IND":{"message":"Indonesian","description":"Language name for available languages list","component":"TextEditor"},"LANG_INA":{"message":"Interlingua","description":"Language name for available languages list","component":"TextEditor"},"LANG_ILE":{"message":"Interlingue","description":"Language name for available languages list","component":"TextEditor"},"LANG_IPK":{"message":"Inupiaq","description":"Language name for available languages list","component":"TextEditor"},"LANG_GLE":{"message":"Irish (Modern)","description":"Language name for available languages list","component":"TextEditor"},"LANG_MGA":{"message":"Irish (Middle 900–1200)","description":"Language name for available languages list","component":"TextEditor"},"LANG_SGA":{"message":"Irish (Old, to 900)","description":"Language name for available languages list","component":"TextEditor"},"LANG_ITA":{"message":"Italian","description":"Language name for available languages list","component":"TextEditor"},"LANG_JPN":{"message":"Japanese","description":"Language name for available languages list","component":"TextEditor"},"LANG_JAV":{"message":"Javanese","description":"Language name for available languages list","component":"TextEditor"},"LANG_KAN":{"message":"Kannada","description":"Language name for available languages list","component":"TextEditor"},"LANG_KAZ":{"message":"Kazakh","description":"Language name for available languages list","component":"TextEditor"},"LANG_KAS":{"message":"Kashmiri","description":"Language name for available languages list","component":"TextEditor"},"LANG_KIN":{"message":"Kinyarwanda","description":"Language name for available languages list","component":"TextEditor"},"LANG_KHA":{"message":"Khasi","description":"Language name for available languages list","component":"TextEditor"},"LANG_KHM":{"message":"Khmer (Central)","description":"Language name for available languages list","component":"TextEditor"},"LANG_KOR":{"message":"Korean","description":"Language name for available languages list","component":"TextEditor"},"LANG_TLH":{"message":"Klingon","description":"Language name for available languages list","component":"TextEditor"},"LANG_KUR":{"message":"Kurdish","description":"Language name for available languages list","component":"TextEditor"},"LANG_KIR":{"message":"Kyrgyz","description":"Language name for available languages list","component":"TextEditor"},"LANG_LAD":{"message":"Ladino","description":"Language name for available languages list","component":"TextEditor"},"LANG_LAO":{"message":"Laothian","description":"Language name for available languages list","component":"TextEditor"},"LANG_LAV":{"message":"Latvian","description":"Language name for available languages list","component":"TextEditor"},"LANG_LIM":{"message":"Limbu","description":"Language name for available languages list","component":"TextEditor"},"LANG_LIN":{"message":"Lingala","description":"Language name for available languages list","component":"TextEditor"},"LANG_LIT":{"message":"Lithuanian","description":"Language name for available languages list","component":"TextEditor"},"LANG_LTZ":{"message":"Luxembourgish","description":"Language name for available languages list","component":"TextEditor"},"LANG_MAC":{"message":"Macedonian","description":"Language name for available languages list","component":"TextEditor"},"LANG_MSA":{"message":"Malay","description":"Language name for available languages list","component":"TextEditor"},"LANG_MLG":{"message":"Malagasy","description":"Language name for available languages list","component":"TextEditor"},"LANG_MAL":{"message":"Malayalam","description":"Language name for available languages list","component":"TextEditor"},"LANG_MLT":{"message":"Maltese","description":"Language name for available languages list","component":"TextEditor"},"LANG_MAO":{"message":"Maori","description":"Language name for available languages list","component":"TextEditor"},"LANG_MAR":{"message":"Marathi","description":"Language name for available languages list","component":"TextEditor"},"LANG_MFE":{"message":"Mauritian Creole","description":"Language name for available languages list","component":"TextEditor"},"LANG_MON":{"message":"Mongolian","description":"Language name for available languages list","component":"TextEditor"},"LANG_NEW":{"message":"Nepal Bhasa (Newari)","description":"Language name for available languages list","component":"TextEditor"},"LANG_NEP":{"message":"Nepali","description":"Language name for available languages list","component":"TextEditor"},"LANG_NWC":{"message":"Newari","description":"Language name for available languages list","component":"TextEditor"},"LANG_NON":{"message":"Norse (Old)","description":"Language name for available languages list","component":"TextEditor"},"LANG_NOR":{"message":"Norwegian","description":"Language name for available languages list","component":"TextEditor"},"LANG_NBL":{"message":"Ndebele","description":"Language name for available languages list","component":"TextEditor"},"LANG_NOB":{"message":"Norwegian (Bokmål)","description":"Language name for available languages list","component":"TextEditor"},"LANG_NNO":{"message":"Norwegian (Nynorsk)","description":"Language name for available languages list","component":"TextEditor"},"LANG_NYA":{"message":"Nyanja","description":"Language name for available languages list","component":"TextEditor"},"LANG_OCI":{"message":"Occitan","description":"Language name for available languages list","component":"TextEditor"},"LANG_ORI":{"message":"Oriya","description":"Language name for available languages list","component":"TextEditor"},"LANG_ORM":{"message":"Oromo","description":"Language name for available languages list","component":"TextEditor"},"LANG_OSS":{"message":"Ossetian","description":"Language name for available languages list","component":"TextEditor"},"LANG_PAL":{"message":"Pahlavi (Middle Persian)","description":"Language name for available languages list","component":"TextEditor"},"LANG_PLI":{"message":"Pali","description":"Language name for available languages list","component":"TextEditor"},"LANG_PUS":{"message":"Pashto","description":"Language name for available languages list","component":"TextEditor"},"LANG_NSO":{"message":"Pedi","description":"Language name for available languages list","component":"TextEditor"},"LANG_PER":{"message":"Persian","description":"Language name for available languages list","component":"TextEditor"},"LANG_FAS":{"message":"Persian (Farsi)","description":"Language name for available languages list","component":"TextEditor"},"LANG_PEO":{"message":"Persian (Old, 600–400 BC)","description":"Language name for available languages list","component":"TextEditor"},"LANG_PHN":{"message":"Phoenician","description":"Language name for available languages list","component":"TextEditor"},"LANG_POL":{"message":"Polish","description":"Language name for available languages list","component":"TextEditor"},"LANG_POR":{"message":"Portuguese","description":"Language name for available languages list","component":"TextEditor"},"LANG_PRA":{"message":"Prakrit","description":"Language name for available languages list","component":"TextEditor"},"LANG_PRO":{"message":"Provençal (Occitan, –1500)","description":"Language name for available languages list","component":"TextEditor"},"LANG_PAN":{"message":"Punjabi (Panjabi)","description":"Language name for available languages list","component":"TextEditor"},"LANG_QUE":{"message":"Quechua","description":"Language name for available languages list","component":"TextEditor"},"LANG_RAJ":{"message":"Rajasthani","description":"Language name for available languages list","component":"TextEditor"},"LANG_ROH":{"message":"Rhaeto Romance","description":"Language name for available languages list","component":"TextEditor"},"LANG_RON":{"message":"Romanian","description":"Language name for available languages list","component":"TextEditor"},"LANG_ROM":{"message":"Romany","description":"Language name for available languages list","component":"TextEditor"},"LANG_RUN":{"message":"Rundi","description":"Language name for available languages list","component":"TextEditor"},"LANG_RUS":{"message":"Russian","description":"Language name for available languages list","component":"TextEditor"},"LANG_SMO":{"message":"Samoan","description":"Language name for available languages list","component":"TextEditor"},"LANG_SAG":{"message":"Sango","description":"Language name for available languages list","component":"TextEditor"},"LANG_SAN":{"message":"Sanskrit","description":"Language name for available languages list","component":"TextEditor"},"LANG_SCO":{"message":"Scots","description":"Language name for available languages list","component":"TextEditor"},"LANG_GLA":{"message":"Scottish (Gaelic)","description":"Language name for available languages list","component":"TextEditor"},"LANG_SRP":{"message":"Serbian","description":"Language name for available languages list","component":"TextEditor"},"LANG_SOT":{"message":"Sesotho","description":"Language name for available languages list","component":"TextEditor"},"LANG_SCN":{"message":"Sicilian","description":"Language name for available languages list","component":"TextEditor"},"LANG_SND":{"message":"Sindhi","description":"Language name for available languages list","component":"TextEditor"},"LANG_SIN":{"message":"Sinhalese (Sinhala)","description":"Language name for available languages list","component":"TextEditor"},"LANG_SSW":{"message":"Siswant","description":"Language name for available languages list","component":"TextEditor"},"LANG_SNA":{"message":"Shona","description":"Language name for available languages list","component":"TextEditor"},"LANG_SLK":{"message":"Slovak","description":"Language name for available languages list","component":"TextEditor"},"LANG_SLV":{"message":"Slovenian","description":"Language name for available languages list","component":"TextEditor"},"LANG_SOG":{"message":"Sogdian","description":"Language name for available languages list","component":"TextEditor"},"LANG_SOM":{"message":"Somali","description":"Language name for available languages list","component":"TextEditor"},"LANG_SPA":{"message":"Spanish (Castilian)","description":"Language name for available languages list","component":"TextEditor"},"LANG_SUX":{"message":"Sumerian","description":"Language name for available languages list","component":"TextEditor"},"LANG_SUN":{"message":"Sundanese","description":"Language name for available languages list","component":"TextEditor"},"LANG_SWA":{"message":"Swahili","description":"Language name for available languages list","component":"TextEditor"},"LANG_SWE":{"message":"Swedish","description":"Language name for available languages list","component":"TextEditor"},"LANG_GSW":{"message":"Swiss German (Alsatian)","description":"Language name for available languages list","component":"TextEditor"},"LANG_SYC":{"message":"Syriac (Classical)","description":"Language name for available languages list","component":"TextEditor"},"LANG_SYR":{"message":"Syriac (Northeastern, Neo-Aramaic)","description":"Language name for available languages list","component":"TextEditor"},"LANG_TGL":{"message":"Tagalog","description":"Language name for available languages list","component":"TextEditor"},"LANG_TGK":{"message":"Tajik","description":"Language name for available languages list","component":"TextEditor"},"LANG_TAM":{"message":"Tamil","description":"Language name for available languages list","component":"TextEditor"},"LANG_TAT":{"message":"Tatar","description":"Language name for available languages list","component":"TextEditor"},"LANG_TEL":{"message":"Telugu","description":"Language name for available languages list","component":"TextEditor"},"LANG_THA":{"message":"Thai","description":"Language name for available languages list","component":"TextEditor"},"LANG_BOD":{"message":"Tibetan","description":"Language name for available languages list","component":"TextEditor"},"LANG_TIR":{"message":"Tigrinya","description":"Language name for available languages list","component":"TextEditor"},"LANG_TOG":{"message":"Tonga","description":"Language name for available languages list","component":"TextEditor"},"LANG_TSO":{"message":"Tsonga","description":"Language name for available languages list","component":"TextEditor"},"LANG_TSN":{"message":"Tswana","description":"Language name for available languages list","component":"TextEditor"},"LANG_TUR":{"message":"Turkish (Modern)","description":"Language name for available languages list","component":"TextEditor"},"LANG_OTA":{"message":"Turkish (Ottoman, 1500–1928)","description":"Language name for available languages list","component":"TextEditor"},"LANG_TUK":{"message":"Turkmen","description":"Language name for available languages list","component":"TextEditor"},"LANG_UGA":{"message":"Ugaritic","description":"Language name for available languages list","component":"TextEditor"},"LANG_UIG":{"message":"Uighur","description":"Language name for available languages list","component":"TextEditor"},"LANG_UKR":{"message":"Ukrainian","description":"Language name for available languages list","component":"TextEditor"},"LANG_URD":{"message":"Urdu","description":"Language name for available languages list","component":"TextEditor"},"LANG_UZB":{"message":"Uzbek","description":"Language name for available languages list","component":"TextEditor"},"LANG_VEN":{"message":"Venda","description":"Language name for available languages list","component":"TextEditor"},"LANG_VIE":{"message":"Vietnamese","description":"Language name for available languages list","component":"TextEditor"},"LANG_VOL":{"message":"Volapuk","description":"Language name for available languages list","component":"TextEditor"},"LANG_WAR":{"message":"Waray Philippines","description":"Language name for available languages list","component":"TextEditor"},"LANG_WLN":{"message":"Walloon","description":"Language name for available languages list","component":"TextEditor"},"LANG_CYM":{"message":"Welsh","description":"Language name for available languages list","component":"TextEditor"},"LANG_WOL":{"message":"Wolof","description":"Language name for available languages list","component":"TextEditor"},"LANG_XHO":{"message":"Xhosa","description":"Language name for available languages list","component":"TextEditor"},"LANG_YID":{"message":"Yiddish","description":"Language name for available languages list","component":"TextEditor"},"LANG_YOR":{"message":"Yoruba","description":"Language name for available languages list","component":"TextEditor"},"LANG_ZHA":{"message":"Zhuang","description":"Language name for available languages list","component":"TextEditor"}}');
+module.exports = JSON.parse('{"LANG_ENG":{"message":"English","description":"Language name for available languages list","component":"TextEditor"},"LANG_LAT":{"message":"Latin","description":"Language name for available languages list","component":"TextEditor"},"LANG_GRC":{"message":"Greek (Ancient –1453)","description":"Language name for available languages list","component":"TextEditor"},"LANG_ARA":{"message":"Arabic","description":"Language name for available languages list","component":"TextEditor"},"LANG_ZH":{"message":"Chinese","description":"Language name for available languages list","component":"TextEditor"},"LANG_ZHO":{"message":"Chinese","description":"Language name for available languages list","component":"TextEditor"},"LANG_AAR":{"message":"Afar","description":"Language name for available languages list","component":"TextEditor"},"LANG_ABK":{"message":"Abkhazian","description":"Language name for available languages list","component":"TextEditor"},"LANG_AKA":{"message":"Akan","description":"Language name for available languages list","component":"TextEditor"},"LANG_AFR":{"message":"Afrikaans","description":"Language name for available languages list","component":"TextEditor"},"LANG_AKK":{"message":"Akkadian","description":"Language name for available languages list","component":"TextEditor"},"LANG_SQI":{"message":"Albanian","description":"Language name for available languages list","component":"TextEditor"},"LANG_AMH":{"message":"Amharic","description":"Language name for available languages list","component":"TextEditor"},"LANG_ARG":{"message":"Aragonese","description":"Language name for available languages list","component":"TextEditor"},"LANG_ARC":{"message":"Aramaic (Imperial- 700 BC–300 BC)","description":"Language name for available languages list","component":"TextEditor"},"LANG_SAM":{"message":"Aramaic (Samaritan)","description":"Language name for available languages list","component":"TextEditor"},"LANG_HYE":{"message":"Armenian","description":"Language name for available languages list","component":"TextEditor"},"LANG_ASM":{"message":"Assamese","description":"Language name for available languages list","component":"TextEditor"},"LANG_AST":{"message":"Asturian","description":"Language name for available languages list","component":"TextEditor"},"LANG_AVE":{"message":"Avestan","description":"Language name for available languages list","component":"TextEditor"},"LANG_AYM":{"message":"Aymara","description":"Language name for available languages list","component":"TextEditor"},"LANG_AZE":{"message":"Azerbaijani","description":"Language name for available languages list","component":"TextEditor"},"LANG_EUS":{"message":"Basque","description":"Language name for available languages list","component":"TextEditor"},"LANG_BAK":{"message":"Bashkir","description":"Language name for available languages list","component":"TextEditor"},"LANG_BEL":{"message":"Belarusian","description":"Language name for available languages list","component":"TextEditor"},"LANG_BEN":{"message":"Bengali","description":"Language name for available languages list","component":"TextEditor"},"LANG_BER":{"message":"Berber","description":"Language name for available languages list","component":"TextEditor"},"LANG_BIH":{"message":"Bihari","description":"Language name for available languages list","component":"TextEditor"},"LANG_BIS":{"message":"Bislama","description":"Language name for available languages list","component":"TextEditor"},"LANG_BOS":{"message":"Bosnian","description":"Language name for available languages list","component":"TextEditor"},"LANG_BRE":{"message":"Breton","description":"Language name for available languages list","component":"TextEditor"},"LANG_BUL":{"message":"Bulgarian","description":"Language name for available languages list","component":"TextEditor"},"LANG_BUG":{"message":"Buginese","description":"Language name for available languages list","component":"TextEditor"},"LANG_CHU":{"message":"Bulgarian (Old, Old Church Slavonic)","description":"Language name for available languages list","component":"TextEditor"},"LANG_MYA":{"message":"Burmese","description":"Language name for available languages list","component":"TextEditor"},"LANG_CAT":{"message":"Catalan","description":"Language name for available languages list","component":"TextEditor"},"LANG_CEB":{"message":"Cebuano","description":"Language name for available languages list","component":"TextEditor"},"LANG_CHG":{"message":"Chagatai","description":"Language name for available languages list","component":"TextEditor"},"LANG_CHR":{"message":"Cherokee","description":"Language name for available languages list","component":"TextEditor"},"LANG_COP":{"message":"Coptic","description":"Language name for available languages list","component":"TextEditor"},"LANG_COR":{"message":"Cornish","description":"Language name for available languages list","component":"TextEditor"},"LANG_COS":{"message":"Corsican","description":"Language name for available languages list","component":"TextEditor"},"LANG_CRS":{"message":"Seselwa","description":"Language name for available languages list","component":"TextEditor"},"LANG_HRV":{"message":"Croatian","description":"Language name for available languages list","component":"TextEditor"},"LANG_CES":{"message":"Czech","description":"Language name for available languages list","component":"TextEditor"},"LANG_DAN":{"message":"Danish","description":"Language name for available languages list","component":"TextEditor"},"LANG_DIV":{"message":"Dhivehi","description":"Language name for available languages list","component":"TextEditor"},"LANG_DZO":{"message":"Dzongkha","description":"Language name for available languages list","component":"TextEditor"},"LANG_NLD":{"message":"Dutch (Flemish)","description":"Language name for available languages list","component":"TextEditor"},"LANG_DUM":{"message":"Dutch (Middle, 1050–1350)","description":"Language name for available languages list","component":"TextEditor"},"LANG_EGY":{"message":"Egyptian (Ancient)","description":"Language name for available languages list","component":"TextEditor"},"LANG_ELX":{"message":"Elamite","description":"Language name for available languages list","component":"TextEditor"},"LANG_ENM":{"message":"English (Middle, 1100–1500)","description":"Language name for available languages list","component":"TextEditor"},"LANG_ANG":{"message":"English (Old, 450–1100)","description":"Language name for available languages list","component":"TextEditor"},"LANG_EST":{"message":"Estonian","description":"Language name for available languages list","component":"TextEditor"},"LANG_EPO":{"message":"Esperanto","description":"Language name for available languages list","component":"TextEditor"},"LANG_FAO":{"message":"Faroese","description":"Language name for available languages list","component":"TextEditor"},"LANG_FIJ":{"message":"Fijian","description":"Language name for available languages list","component":"TextEditor"},"LANG_FIN":{"message":"Finnish","description":"Language name for available languages list","component":"TextEditor"},"LANG_FRA":{"message":"French","description":"Language name for available languages list","component":"TextEditor"},"LANG_FRM":{"message":"French (Middle, 1400—1600)","description":"Language name for available languages list","component":"TextEditor"},"LANG_FRO":{"message":"French (Old, 842—c. 1400)","description":"Language name for available languages list","component":"TextEditor"},"LANG_FRR":{"message":"Frisian","description":"Language name for available languages list","component":"TextEditor"},"LANG_GLG":{"message":"Galician","description":"Language name for available languages list","component":"TextEditor"},"LANG_GRN":{"message":"Guarani","description":"Language name for available languages list","component":"TextEditor"},"LANG_GEZ":{"message":"Ge\'ez","description":"Language name for available languages list","component":"TextEditor"},"LANG_HAT":{"message":"Haitian Creole","description":"Language name for available languages list","component":"TextEditor"},"LANG_HAU":{"message":"Hausa","description":"Language name for available languages list","component":"TextEditor"},"LANG_HAW":{"message":"Hawaiian","description":"Language name for available languages list","component":"TextEditor"},"LANG_HMN":{"message":"Hmong","description":"Language name for available languages list","component":"TextEditor"},"LANG_LUG":{"message":"Ganda","description":"Language name for available languages list","component":"TextEditor"},"LANG_KAT":{"message":"Georgian","description":"Language name for available languages list","component":"TextEditor"},"LANG_NDS":{"message":"German (Low, Low Saxon)","description":"Language name for available languages list","component":"TextEditor"},"LANG_GMH":{"message":"German (Middle-High, 1050–1500)","description":"Language name for available languages list","component":"TextEditor"},"LANG_GOH":{"message":"German (Old-High, 750–1050)","description":"Language name for available languages list","component":"TextEditor"},"LANG_DEU":{"message":"German","description":"Language name for available languages list","component":"TextEditor"},"LANG_GOT":{"message":"Gothic","description":"Language name for available languages list","component":"TextEditor"},"LANG_ELL":{"message":"Greek (Modern, 1453–)","description":"Language name for available languages list","component":"TextEditor"},"LANG_KAL":{"message":"Greenlandic","description":"Language name for available languages list","component":"TextEditor"},"LANG_GUJ":{"message":"Gujarati","description":"Language name for available languages list","component":"TextEditor"},"LANG_HEB":{"message":"Hebrew","description":"Language name for available languages list","component":"TextEditor"},"LANG_HIN":{"message":"Hindi","description":"Language name for available languages list","component":"TextEditor"},"LANG_HIT":{"message":"Hittite","description":"Language name for available languages list","component":"TextEditor"},"LANG_HUN":{"message":"Hungarian","description":"Language name for available languages list","component":"TextEditor"},"LANG_IBO":{"message":"Igbo","description":"Language name for available languages list","component":"TextEditor"},"LANG_IKU":{"message":"Inuktitut","description":"Language name for available languages list","component":"TextEditor"},"LANG_ISL":{"message":"Icelandic","description":"Language name for available languages list","component":"TextEditor"},"LANG_IND":{"message":"Indonesian","description":"Language name for available languages list","component":"TextEditor"},"LANG_INA":{"message":"Interlingua","description":"Language name for available languages list","component":"TextEditor"},"LANG_ILE":{"message":"Interlingue","description":"Language name for available languages list","component":"TextEditor"},"LANG_IPK":{"message":"Inupiaq","description":"Language name for available languages list","component":"TextEditor"},"LANG_GLE":{"message":"Irish (Modern)","description":"Language name for available languages list","component":"TextEditor"},"LANG_GLV":{"message":"Manx","description":"Language name for available languages list","component":"TextEditor"},"LANG_MGA":{"message":"Irish (Middle 900–1200)","description":"Language name for available languages list","component":"TextEditor"},"LANG_SGA":{"message":"Irish (Old, to 900)","description":"Language name for available languages list","component":"TextEditor"},"LANG_ITA":{"message":"Italian","description":"Language name for available languages list","component":"TextEditor"},"LANG_JPN":{"message":"Japanese","description":"Language name for available languages list","component":"TextEditor"},"LANG_JAV":{"message":"Javanese","description":"Language name for available languages list","component":"TextEditor"},"LANG_KAN":{"message":"Kannada","description":"Language name for available languages list","component":"TextEditor"},"LANG_KAZ":{"message":"Kazakh","description":"Language name for available languages list","component":"TextEditor"},"LANG_KAS":{"message":"Kashmiri","description":"Language name for available languages list","component":"TextEditor"},"LANG_KIN":{"message":"Kinyarwanda","description":"Language name for available languages list","component":"TextEditor"},"LANG_KHA":{"message":"Khasi","description":"Language name for available languages list","component":"TextEditor"},"LANG_KHM":{"message":"Khmer (Central)","description":"Language name for available languages list","component":"TextEditor"},"LANG_KOR":{"message":"Korean","description":"Language name for available languages list","component":"TextEditor"},"LANG_TLH":{"message":"Klingon","description":"Language name for available languages list","component":"TextEditor"},"LANG_KUR":{"message":"Kurdish","description":"Language name for available languages list","component":"TextEditor"},"LANG_KIR":{"message":"Kyrgyz","description":"Language name for available languages list","component":"TextEditor"},"LANG_LAD":{"message":"Ladino","description":"Language name for available languages list","component":"TextEditor"},"LANG_LAO":{"message":"Laothian","description":"Language name for available languages list","component":"TextEditor"},"LANG_LAV":{"message":"Latvian","description":"Language name for available languages list","component":"TextEditor"},"LANG_LIM":{"message":"Limbu","description":"Language name for available languages list","component":"TextEditor"},"LANG_LIN":{"message":"Lingala","description":"Language name for available languages list","component":"TextEditor"},"LANG_LIT":{"message":"Lithuanian","description":"Language name for available languages list","component":"TextEditor"},"LANG_LTZ":{"message":"Luxembourgish","description":"Language name for available languages list","component":"TextEditor"},"LANG_MAC":{"message":"Macedonian","description":"Language name for available languages list","component":"TextEditor"},"LANG_MSA":{"message":"Malay","description":"Language name for available languages list","component":"TextEditor"},"LANG_MLG":{"message":"Malagasy","description":"Language name for available languages list","component":"TextEditor"},"LANG_MAL":{"message":"Malayalam","description":"Language name for available languages list","component":"TextEditor"},"LANG_MLT":{"message":"Maltese","description":"Language name for available languages list","component":"TextEditor"},"LANG_MAO":{"message":"Maori","description":"Language name for available languages list","component":"TextEditor"},"LANG_MAR":{"message":"Marathi","description":"Language name for available languages list","component":"TextEditor"},"LANG_MFE":{"message":"Mauritian Creole","description":"Language name for available languages list","component":"TextEditor"},"LANG_MON":{"message":"Mongolian","description":"Language name for available languages list","component":"TextEditor"},"LANG_NEW":{"message":"Nepal Bhasa (Newari)","description":"Language name for available languages list","component":"TextEditor"},"LANG_NEP":{"message":"Nepali","description":"Language name for available languages list","component":"TextEditor"},"LANG_NAU":{"message":"Nauru","description":"Language name for available languages list","component":"TextEditor"},"LANG_NWC":{"message":"Newari","description":"Language name for available languages list","component":"TextEditor"},"LANG_NON":{"message":"Norse (Old)","description":"Language name for available languages list","component":"TextEditor"},"LANG_NOR":{"message":"Norwegian","description":"Language name for available languages list","component":"TextEditor"},"LANG_NBL":{"message":"Ndebele","description":"Language name for available languages list","component":"TextEditor"},"LANG_NOB":{"message":"Norwegian (Bokmål)","description":"Language name for available languages list","component":"TextEditor"},"LANG_NNO":{"message":"Norwegian (Nynorsk)","description":"Language name for available languages list","component":"TextEditor"},"LANG_NYA":{"message":"Nyanja","description":"Language name for available languages list","component":"TextEditor"},"LANG_OCI":{"message":"Occitan","description":"Language name for available languages list","component":"TextEditor"},"LANG_ORI":{"message":"Oriya","description":"Language name for available languages list","component":"TextEditor"},"LANG_ORM":{"message":"Oromo","description":"Language name for available languages list","component":"TextEditor"},"LANG_OSS":{"message":"Ossetian","description":"Language name for available languages list","component":"TextEditor"},"LANG_PAL":{"message":"Pahlavi (Middle Persian)","description":"Language name for available languages list","component":"TextEditor"},"LANG_PLI":{"message":"Pali","description":"Language name for available languages list","component":"TextEditor"},"LANG_PUS":{"message":"Pashto","description":"Language name for available languages list","component":"TextEditor"},"LANG_NSO":{"message":"Pedi","description":"Language name for available languages list","component":"TextEditor"},"LANG_PER":{"message":"Persian","description":"Language name for available languages list","component":"TextEditor"},"LANG_FAS":{"message":"Persian (Farsi)","description":"Language name for available languages list","component":"TextEditor"},"LANG_PEO":{"message":"Persian (Old, 600–400 BC)","description":"Language name for available languages list","component":"TextEditor"},"LANG_PHN":{"message":"Phoenician","description":"Language name for available languages list","component":"TextEditor"},"LANG_POL":{"message":"Polish","description":"Language name for available languages list","component":"TextEditor"},"LANG_POR":{"message":"Portuguese","description":"Language name for available languages list","component":"TextEditor"},"LANG_PRA":{"message":"Prakrit","description":"Language name for available languages list","component":"TextEditor"},"LANG_PRO":{"message":"Provençal (Occitan, –1500)","description":"Language name for available languages list","component":"TextEditor"},"LANG_PAN":{"message":"Punjabi (Panjabi)","description":"Language name for available languages list","component":"TextEditor"},"LANG_QUE":{"message":"Quechua","description":"Language name for available languages list","component":"TextEditor"},"LANG_RAJ":{"message":"Rajasthani","description":"Language name for available languages list","component":"TextEditor"},"LANG_ROH":{"message":"Rhaeto Romance","description":"Language name for available languages list","component":"TextEditor"},"LANG_RON":{"message":"Romanian","description":"Language name for available languages list","component":"TextEditor"},"LANG_ROM":{"message":"Romany","description":"Language name for available languages list","component":"TextEditor"},"LANG_RUN":{"message":"Rundi","description":"Language name for available languages list","component":"TextEditor"},"LANG_RUS":{"message":"Russian","description":"Language name for available languages list","component":"TextEditor"},"LANG_SMO":{"message":"Samoan","description":"Language name for available languages list","component":"TextEditor"},"LANG_SAG":{"message":"Sango","description":"Language name for available languages list","component":"TextEditor"},"LANG_SAN":{"message":"Sanskrit","description":"Language name for available languages list","component":"TextEditor"},"LANG_SCO":{"message":"Scots","description":"Language name for available languages list","component":"TextEditor"},"LANG_GLA":{"message":"Scottish (Gaelic)","description":"Language name for available languages list","component":"TextEditor"},"LANG_SRP":{"message":"Serbian","description":"Language name for available languages list","component":"TextEditor"},"LANG_SOT":{"message":"Sesotho","description":"Language name for available languages list","component":"TextEditor"},"LANG_SCN":{"message":"Sicilian","description":"Language name for available languages list","component":"TextEditor"},"LANG_SND":{"message":"Sindhi","description":"Language name for available languages list","component":"TextEditor"},"LANG_SIN":{"message":"Sinhalese (Sinhala)","description":"Language name for available languages list","component":"TextEditor"},"LANG_SSW":{"message":"Siswant","description":"Language name for available languages list","component":"TextEditor"},"LANG_SNA":{"message":"Shona","description":"Language name for available languages list","component":"TextEditor"},"LANG_SLK":{"message":"Slovak","description":"Language name for available languages list","component":"TextEditor"},"LANG_SLV":{"message":"Slovenian","description":"Language name for available languages list","component":"TextEditor"},"LANG_SOG":{"message":"Sogdian","description":"Language name for available languages list","component":"TextEditor"},"LANG_SOM":{"message":"Somali","description":"Language name for available languages list","component":"TextEditor"},"LANG_SPA":{"message":"Spanish (Castilian)","description":"Language name for available languages list","component":"TextEditor"},"LANG_SUX":{"message":"Sumerian","description":"Language name for available languages list","component":"TextEditor"},"LANG_SUN":{"message":"Sundanese","description":"Language name for available languages list","component":"TextEditor"},"LANG_SWA":{"message":"Swahili","description":"Language name for available languages list","component":"TextEditor"},"LANG_SWE":{"message":"Swedish","description":"Language name for available languages list","component":"TextEditor"},"LANG_GSW":{"message":"Swiss German (Alsatian)","description":"Language name for available languages list","component":"TextEditor"},"LANG_SYC":{"message":"Syriac (Classical)","description":"Language name for available languages list","component":"TextEditor"},"LANG_SYR":{"message":"Syriac (Northeastern, Neo-Aramaic)","description":"Language name for available languages list","component":"TextEditor"},"LANG_TGL":{"message":"Tagalog","description":"Language name for available languages list","component":"TextEditor"},"LANG_TGK":{"message":"Tajik","description":"Language name for available languages list","component":"TextEditor"},"LANG_TAM":{"message":"Tamil","description":"Language name for available languages list","component":"TextEditor"},"LANG_TAT":{"message":"Tatar","description":"Language name for available languages list","component":"TextEditor"},"LANG_TEL":{"message":"Telugu","description":"Language name for available languages list","component":"TextEditor"},"LANG_THA":{"message":"Thai","description":"Language name for available languages list","component":"TextEditor"},"LANG_BOD":{"message":"Tibetan","description":"Language name for available languages list","component":"TextEditor"},"LANG_TIR":{"message":"Tigrinya","description":"Language name for available languages list","component":"TextEditor"},"LANG_TOG":{"message":"Tonga","description":"Language name for available languages list","component":"TextEditor"},"LANG_TSO":{"message":"Tsonga","description":"Language name for available languages list","component":"TextEditor"},"LANG_TSN":{"message":"Tswana","description":"Language name for available languages list","component":"TextEditor"},"LANG_TUR":{"message":"Turkish (Modern)","description":"Language name for available languages list","component":"TextEditor"},"LANG_OTA":{"message":"Turkish (Ottoman, 1500–1928)","description":"Language name for available languages list","component":"TextEditor"},"LANG_TUK":{"message":"Turkmen","description":"Language name for available languages list","component":"TextEditor"},"LANG_UGA":{"message":"Ugaritic","description":"Language name for available languages list","component":"TextEditor"},"LANG_UIG":{"message":"Uighur","description":"Language name for available languages list","component":"TextEditor"},"LANG_UKR":{"message":"Ukrainian","description":"Language name for available languages list","component":"TextEditor"},"LANG_URD":{"message":"Urdu","description":"Language name for available languages list","component":"TextEditor"},"LANG_UZB":{"message":"Uzbek","description":"Language name for available languages list","component":"TextEditor"},"LANG_VEN":{"message":"Venda","description":"Language name for available languages list","component":"TextEditor"},"LANG_VIE":{"message":"Vietnamese","description":"Language name for available languages list","component":"TextEditor"},"LANG_VOL":{"message":"Volapuk","description":"Language name for available languages list","component":"TextEditor"},"LANG_WAR":{"message":"Waray Philippines","description":"Language name for available languages list","component":"TextEditor"},"LANG_WLN":{"message":"Walloon","description":"Language name for available languages list","component":"TextEditor"},"LANG_CYM":{"message":"Welsh","description":"Language name for available languages list","component":"TextEditor"},"LANG_WOL":{"message":"Wolof","description":"Language name for available languages list","component":"TextEditor"},"LANG_XHO":{"message":"Xhosa","description":"Language name for available languages list","component":"TextEditor"},"LANG_YID":{"message":"Yiddish","description":"Language name for available languages list","component":"TextEditor"},"LANG_YOR":{"message":"Yoruba","description":"Language name for available languages list","component":"TextEditor"},"LANG_ZHA":{"message":"Zhuang","description":"Language name for available languages list","component":"TextEditor"}}');
/***/ }),
@@ -58116,7 +59003,7 @@ module.exports = JSON.parse('{"LANG_ENG":{"message":"English","description":"Lan
/***/ ((module) => {
"use strict";
-module.exports = JSON.parse('{"MAIN_MENU_DOWNLOAD_TITLE":{"message":"Download","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_UPLOAD_TITLE":{"message":"Upload","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_ALIGN_TITLE":{"message":"Align","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_REDO_TITLE":{"message":"Redo","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_UNDO_TITLE":{"message":"Undo","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_ADD_TARGET_TITLE":{"message":"Add translation","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_SHOW_OPTIONS_TITLE":{"message":"Show options","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_HIDE_OPTIONS_TITLE":{"message":"Hide options","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_CLEAR_TEXT":{"message":"New Alignment","description":"Button in main menu","component":"MainMenu"}}');
+module.exports = JSON.parse('{"MAIN_MENU_DOWNLOAD_TITLE":{"message":"Download","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_UPLOAD_TITLE":{"message":"Upload","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_ALIGN_TITLE":{"message":"Prepare texts for alignment","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_REDO_TITLE":{"message":"Redo","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_UNDO_TITLE":{"message":"Undo","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_ADD_TARGET_TITLE":{"message":"Add translation","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_SHOW_OPTIONS_TITLE":{"message":"Show options","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_HIDE_OPTIONS_TITLE":{"message":"Hide options","description":"Button in main menu","component":"MainMenu"},"MAIN_MENU_CLEAR_TEXT":{"message":"New Alignment","description":"Button in main menu","component":"MainMenu"}}');
/***/ }),
@@ -58149,7 +59036,7 @@ module.exports = JSON.parse('{"OPTIONS_BLOCK_APPLICATION":{"message":"Applicatio
/***/ ((module) => {
"use strict";
-module.exports = JSON.parse('{"TEXT_EDITOR_HEADING":{"message":"Enter text","description":"A heading for text editor","component":"TextEditor"},"TEXT_EDITOR_HIDE":{"message":"hide","description":"A label for hide/show links","component":"TextEditor"},"TEXT_EDITOR_SHOW":{"message":"show","description":"A label for hide/show links","component":"TextEditor"},"TEXT_EDITOR_TEXT_BLOCK_TITLE":{"message":"{ textType } text:","description":"A tytle for text block area","component":"TextEditorSingleBlock","params":["textType"]},"RADIO_BLOCK_DIRECTION_LABEL":{"message":"Text Direction:","description":"A label for text direction select","component":"TextEditorSingleBlock"},"RADIO_BLOCK_DIRECTION_LTR":{"message":"Left to Right","description":"A label for text direction select option","component":"TextEditorSingleBlock"},"RADIO_BLOCK_DIRECTION_RTL":{"message":"Right to Left","description":"A label for text direction select option","component":"TextEditorSingleBlock"},"TEXT_EDITOR_AVA_LANGUAGE_TITLE":{"message":"{ textType } Language:","description":"A title for available languages select","component":"TextEditorSingleBlock","params":["textType"]},"TEXT_EDITOR_LANGUAGE_OTHER_LABEL":{"message":"Or Other Language:","description":"A label for other language text input","component":"TextEditorSingleBlock"},"TEXT_EDITOR_LANGUAGE_OTHER_DESCRIPTION":{"message":"Please use ISO 639-2 or ISO 639-3 three-letter codes for any other languages","description":"A description for other language text input","component":"TextEditorSingleBlock"},"RADIO_BLOCK_TEXTSOURCETYPE_LABEL":{"message":"Text type:","description":"A label for text type select","component":"TextEditorSingleBlock"},"RADIO_BLOCK_TEXTSOURCETYPE_TEXT":{"message":"Text","description":"A label for text type select","component":"TextEditorSingleBlock"},"RADIO_BLOCK_TEXTSOURCETYPE_TEI":{"message":"TEI","description":"A label for text type select","component":"TextEditorSingleBlock"},"TEXT_EDITOR_BLOCK_TOKENIZE_OPTIONS":{"message":"Tokenize options for Alpheios Remote Servise","description":"Fieldset inside options","component":"TextEditorSingleBlock"},"TEXT_EDITOR_BLOCK_TOKENIZE_OPTIONS_TEXT":{"message":"TEXT","description":"Fieldset inside options","component":"TextEditorSingleBlock"},"TEXT_EDITOR_BLOCK_TOKENIZE_OPTIONS_TEI":{"message":"TEI","description":"Fieldset inside options","component":"TextEditorSingleBlock"},"ACTIONS_DOWNLOAD_TITLE":{"message":"Download","description":"Button in main menu","component":"MainMenu"},"ACTIONS_UPLOAD_TITLE":{"message":"Upload text","description":"Button in main menu","component":"MainMenu"},"ACTIONS_METADATA_HIDE_TITLE":{"message":"Hide metadata","description":"Button in main menu","component":"MainMenu"},"ACTIONS_METADATA_SHOW_TITLE":{"message":"Show metadata","description":"Button in main menu","component":"MainMenu"},"ACTIONS_CLEAR_TEXT_TITLE":{"message":"Clear text","description":"Button in main menu","component":"MainMenu"},"UPLOAD_DTSAPI_TITLE":{"message":"Upload texts from DTS API","description":"Title in upload block","component":"UploadDTSAPIBlock"},"UPLOAD_DTSAPI_DESCRIPTION_TITLE":{"message":"You can either upload the entire document or selected passages:","description":"Description in upload bloc","component":"UploadDTSAPIBlock"},"UPLOAD_DTSAPI_DESCRIPTION_DETAILS":{"message":"
Select one reference that you want to upload.
Select multiple references to upload as a range from the minimum to the maximum number. For example, if you choose 2, 5 and 8, the range from 2 to 8 references will be uploaded.
","description":"Description in upload bloc","component":"UploadDTSAPIBlock"},"UPLOAD_DTSAPI_ENTIRE_DOCUMENT":{"message":"Entire document","description":"Title in upload block","component":"UploadDTSAPIBlock"},"UPLOAD_DTSAPI_GO_TO_PAGE":{"message":"go to","description":"Title in upload block","component":"UploadDTSAPIBlock"},"TEXT_SINGLE_TYPE_BUTTON":{"message":"Type/paste in","description":"Title in text editor block","component":"TextEditorSingleBlock"},"TEXT_SINGLE_UPLOAD_BUTTON":{"message":"Upload","description":"Title in text editor block","component":"TextEditorSingleBlock"}}');
+module.exports = JSON.parse('{"TEXT_EDITOR_HEADING":{"message":"Enter text","description":"A heading for text editor","component":"TextEditor"},"TEXT_EDITOR_HIDE":{"message":"hide","description":"A label for hide/show links","component":"TextEditor"},"TEXT_EDITOR_SHOW":{"message":"show","description":"A label for hide/show links","component":"TextEditor"},"TEXT_EDITOR_TEXT_BLOCK_TITLE":{"message":"{ textType } text:","description":"A tytle for text block area","component":"TextEditorSingleBlock","params":["textType"]},"RADIO_BLOCK_DIRECTION_LABEL":{"message":"Text Direction:","description":"A label for text direction select","component":"TextEditorSingleBlock"},"RADIO_BLOCK_DIRECTION_LTR":{"message":"Left to Right","description":"A label for text direction select option","component":"TextEditorSingleBlock"},"RADIO_BLOCK_DIRECTION_RTL":{"message":"Right to Left","description":"A label for text direction select option","component":"TextEditorSingleBlock"},"TEXT_EDITOR_AVA_LANGUAGE_TITLE":{"message":"{ textType } Language:","description":"A title for available languages select","component":"TextEditorSingleBlock","params":["textType"]},"TEXT_EDITOR_LANGUAGE_OTHER_LABEL":{"message":"Or Other Language:","description":"A label for other language text input","component":"TextEditorSingleBlock"},"TEXT_EDITOR_LANGUAGE_OTHER_DESCRIPTION":{"message":"Please use ISO 639-2 or ISO 639-3 three-letter codes for any other languages","description":"A description for other language text input","component":"TextEditorSingleBlock"},"RADIO_BLOCK_TEXTSOURCETYPE_LABEL":{"message":"Text type:","description":"A label for text type select","component":"TextEditorSingleBlock"},"RADIO_BLOCK_TEXTSOURCETYPE_TEXT":{"message":"Text","description":"A label for text type select","component":"TextEditorSingleBlock"},"RADIO_BLOCK_TEXTSOURCETYPE_TEI":{"message":"TEI","description":"A label for text type select","component":"TextEditorSingleBlock"},"TEXT_EDITOR_BLOCK_TOKENIZE_OPTIONS":{"message":"Tokenize options for Alpheios Remote Servise","description":"Fieldset inside options","component":"TextEditorSingleBlock"},"TEXT_EDITOR_BLOCK_TOKENIZE_OPTIONS_TEXT":{"message":"TEXT","description":"Fieldset inside options","component":"TextEditorSingleBlock"},"TEXT_EDITOR_BLOCK_TOKENIZE_OPTIONS_TEI":{"message":"TEI","description":"Fieldset inside options","component":"TextEditorSingleBlock"},"ACTIONS_DOWNLOAD_TITLE":{"message":"Download","description":"Button in main menu","component":"MainMenu"},"ACTIONS_UPLOAD_TITLE":{"message":"Upload text","description":"Button in main menu","component":"MainMenu"},"ACTIONS_METADATA_HIDE_TITLE":{"message":"Hide metadata","description":"Button in main menu","component":"MainMenu"},"ACTIONS_METADATA_SHOW_TITLE":{"message":"Show metadata","description":"Button in main menu","component":"MainMenu"},"ACTIONS_CLEAR_TEXT_TITLE":{"message":"Restart","description":"Button in main menu","component":"MainMenu"},"UPLOAD_DTSAPI_TITLE":{"message":"Upload texts from DTS API","description":"Title in upload block","component":"UploadDTSAPIBlock"},"UPLOAD_DTSAPI_DESCRIPTION_TITLE":{"message":"You can either upload the entire document or selected passages:","description":"Description in upload bloc","component":"UploadDTSAPIBlock"},"UPLOAD_DTSAPI_DESCRIPTION_DETAILS":{"message":"
Select one reference that you want to upload.
Select multiple references to upload as a range from the minimum to the maximum number. For example, if you choose 2, 5 and 8, the range from 2 to 8 references will be uploaded.
","description":"Description in upload bloc","component":"UploadDTSAPIBlock"},"UPLOAD_DTSAPI_ENTIRE_DOCUMENT":{"message":"Entire document","description":"Title in upload block","component":"UploadDTSAPIBlock"},"UPLOAD_DTSAPI_GO_TO_PAGE":{"message":"go to","description":"Title in upload block","component":"UploadDTSAPIBlock"},"TEXT_SINGLE_TYPE_BUTTON":{"message":"Type/paste in","description":"Title in text editor block","component":"TextEditorSingleBlock"},"TEXT_SINGLE_TYPE_LABEL":{"message":"Type or paste in text or","description":"Title in text editor block","component":"TextEditorSingleBlock"},"TEXT_SINGLE_UPLOAD_BUTTON":{"message":"Choose text to upload","description":"Title in text editor block","component":"TextEditorSingleBlock"},"NO_METADATA_ICON":{"message":"Metadata is empty for the text","description":"Tooltip for no metadata icon","component":"TextEditorSingleBlock"},"NO_LANG_DETECTED_ICON":{"message":"Language was not detected, please recheck it manually.","description":"Tooltip for no lang detected icon","component":"TextEditorSingleBlock"},"SUMMARY_POPUP_HEADER":{"message":"Alpheios believes your texts are in the following languages. Please review and correct if necessary","description":"Header in a summary popup component","component":"SummaryPopup"},"SUMMARY_POPUP_TABEL_TH_ORIGINAL":{"message":"Original","description":"Table title","component":"SummaryPopup"},"SUMMARY_POPUP_TABEL_TH_TRANSLATION":{"message":"Original","description":"Table title","component":"SummaryPopup"},"SUMMARY_POPUP_SHOW_OPTION_LABEL":{"message":"Show this popup for each text preparation","description":"Label for the option","component":"SummaryPopup"},"SUMMARY_POPUP_OK_BUTTON":{"message":"All Ok","description":"Button label","component":"SummaryPopup"},"SUMMARY_POPUP_CANCEL_BUTTON":{"message":"Cancel","description":"Button label","component":"SummaryPopup"},"ALIGN_TEXT_BUTTON_TOOLTIP":{"message":"Start tokenizing texts","description":"Tooltip for align texts button","component":"TextEditorSingleBlock"}}');
/***/ }),
@@ -58171,7 +59058,7 @@ module.exports = JSON.parse('{"TOKENS_EDITOR_HEADING":{"message":"Edit text","de
/***/ ((module) => {
"use strict";
-module.exports = JSON.parse('{"domain":"alpheios-alignment-editor-app","version":"1","items":{"theme":{"defaultValue":"v1-theme","labelText":"CSS Theme","select":true,"values":[{"value":"standard-theme","text":"Standard Theme"},{"value":"v1-theme","text":"V1 Theme"}]},"tokenizer":{"defaultValue":"alpheiosRemoteTokenizer","labelText":"Tokenizer service","select":true,"values":[{"value":"alpheiosRemoteTokenizer","text":"Alpheios Remote Tokenizer"},{"value":"simpleLocalTokenizer","text":"Offline tokenizer"}]},"allowUpdateTokenWord":{"defaultValue":false,"labelText":"Allow update token word","boolean":true,"values":[{"value":true,"text":"Yes"},{"value":false,"text":"No"}]},"maxCharactersPerText":{"defaultValue":5000,"labelText":"Max characters per text (recommended for performance)","number":true,"minValue":1,"maxValue":50000,"values":[]},"useSpecificEnglishTokenizer":{"defaultValue":false,"labelText":"Use language specific tokenizer for English","boolean":true,"values":[{"value":true,"text":"Yes"},{"value":false,"text":"No"}]}}}');
+module.exports = JSON.parse('{"domain":"alpheios-alignment-editor-app","version":"1","items":{"theme":{"defaultValue":"v1-theme","labelText":"CSS Theme","select":true,"values":[{"value":"standard-theme","text":"Standard Theme"},{"value":"v1-theme","text":"V1 Theme"}]},"tokenizer":{"defaultValue":"alpheiosRemoteTokenizer","labelText":"Tokenizer service","select":true,"values":[{"value":"alpheiosRemoteTokenizer","text":"Alpheios Remote Tokenizer"},{"value":"simpleLocalTokenizer","text":"Offline tokenizer"}]},"allowUpdateTokenWord":{"defaultValue":false,"labelText":"Allow update token word","boolean":true,"values":[{"value":true,"text":"Yes"},{"value":false,"text":"No"}]},"maxCharactersPerText":{"defaultValue":5000,"labelText":"Max characters per text (recommended for performance)","number":true,"minValue":1,"maxValue":50000,"values":[]},"useSpecificEnglishTokenizer":{"defaultValue":false,"labelText":"Use language specific tokenizer for English","boolean":true,"values":[{"value":true,"text":"Yes"},{"value":false,"text":"No"}]},"showSummaryPopup":{"defaultValue":true,"labelText":"Show language check before text would be prepared","boolean":true,"values":[{"value":true,"text":"Yes"},{"value":false,"text":"No"}]}}}');
/***/ }),
diff --git a/public/dist/alpheios-alignment-editor.js.map b/public/dist/alpheios-alignment-editor.js.map
index 0e222d44..a8126857 100644
--- a/public/dist/alpheios-alignment-editor.js.map
+++ b/public/dist/alpheios-alignment-editor.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack://AlignmentEditor/./styles/style.scss?baf9","webpack://AlignmentEditor/./vue/align-editor/align-editor-view-mode.vue?837b","webpack://AlignmentEditor/./vue/align-editor/align-editor.vue?d61a","webpack://AlignmentEditor/./vue/align-editor/segment-block.vue?903c","webpack://AlignmentEditor/./vue/align-editor/token-block.vue?6c22","webpack://AlignmentEditor/./vue/app.vue?642c","webpack://AlignmentEditor/./vue/common/editor-tabs.vue?bd8c","webpack://AlignmentEditor/./vue/common/tooltip.vue?b822","webpack://AlignmentEditor/./vue/common/waiting.vue?8a6c","webpack://AlignmentEditor/./vue/initial-screen.vue?7dc1","webpack://AlignmentEditor/./vue/main-menu.vue?3984","webpack://AlignmentEditor/./vue/notification-bar.vue?2567","webpack://AlignmentEditor/./vue/options/option-item-block.vue?ff80","webpack://AlignmentEditor/./vue/options/options-block.vue?34d1","webpack://AlignmentEditor/./vue/text-editor/actions-menu-text-editor.vue?f7b9","webpack://AlignmentEditor/./vue/text-editor/direction-options-block.vue?c62e","webpack://AlignmentEditor/./vue/text-editor/dts-api-pagination.vue?f722","webpack://AlignmentEditor/./vue/text-editor/metadata-info.vue?3a57","webpack://AlignmentEditor/./vue/text-editor/metadata-term-block.vue?2401","webpack://AlignmentEditor/./vue/text-editor/text-editor-single-block.vue?f4b4","webpack://AlignmentEditor/./vue/text-editor/text-editor.vue?2159","webpack://AlignmentEditor/./vue/text-editor/tokenize-options-block.vue?c8c6","webpack://AlignmentEditor/./vue/text-editor/upload-dtsapi-block.vue?8db6","webpack://AlignmentEditor/./vue/tokens-editor/actions-button-token-edit.vue?4e80","webpack://AlignmentEditor/./vue/tokens-editor/actions-menu-token-edit.vue?0a14","webpack://AlignmentEditor/./vue/tokens-editor/actions-menu-tokens-editor.vue?dd2a","webpack://AlignmentEditor/./vue/tokens-editor/empty-tokens-input.vue?8406","webpack://AlignmentEditor/./vue/tokens-editor/segment-edit-block.vue?3e47","webpack://AlignmentEditor/./vue/tokens-editor/token-edit-block.vue?5440","webpack://AlignmentEditor/./vue/tokens-editor/tokens-editor-inner-block.vue?9b0d","webpack://AlignmentEditor/./vue/tokens-editor/tokens-editor.vue?fba5","webpack://AlignmentEditor/../node_modules/@formatjs/icu-messageformat-parser/error.js","webpack://AlignmentEditor/../node_modules/@formatjs/icu-messageformat-parser/index.js","webpack://AlignmentEditor/../node_modules/@formatjs/icu-messageformat-parser/parser.js","webpack://AlignmentEditor/../node_modules/@formatjs/icu-messageformat-parser/regex.generated.js","webpack://AlignmentEditor/../node_modules/@formatjs/icu-messageformat-parser/types.js","webpack://AlignmentEditor/../node_modules/@formatjs/icu-skeleton-parser/date-time.js","webpack://AlignmentEditor/../node_modules/@formatjs/icu-skeleton-parser/index.js","webpack://AlignmentEditor/../node_modules/@formatjs/icu-skeleton-parser/number.js","webpack://AlignmentEditor/../node_modules/@formatjs/icu-skeleton-parser/regex.generated.js","webpack://AlignmentEditor/../../webpack/universalModuleDefinition","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/index.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/adapters/xhr.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/axios.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/cancel/Cancel.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/cancel/CancelToken.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/cancel/isCancel.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/core/Axios.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/core/InterceptorManager.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/core/buildFullPath.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/core/createError.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/core/dispatchRequest.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/core/enhanceError.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/core/mergeConfig.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/core/settle.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/core/transformData.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/defaults.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/helpers/bind.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/helpers/buildURL.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/helpers/combineURLs.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/helpers/cookies.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/helpers/isAxiosError.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/helpers/parseHeaders.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/helpers/spread.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/axios/lib/utils.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/xmltojson/lib/xmlToJSON.js","webpack://AlignmentEditor/../../adapters/alpheiostb/adapter.js","webpack://AlignmentEditor/../../adapters/arethusa/adapter.js","webpack://AlignmentEditor/../../adapters/base-adapter.js","webpack://AlignmentEditor/../../adapters/chineseloc/adapter.js","webpack://AlignmentEditor/../../adapters/concordance/adapter.js","webpack://AlignmentEditor/../../adapters/detectlang/adapter.js","webpack://AlignmentEditor/../../adapters/dtsapi/adapter.js","webpack://AlignmentEditor/../../adapters/lexicons/adapter.js","webpack://AlignmentEditor/../../adapters/logeion/adapter.js","webpack://AlignmentEditor/../../adapters/tokenization/adapter.js","webpack://AlignmentEditor/../../adapters/translations/adapter.js","webpack://AlignmentEditor/../../adapters/tufts/adapter.js","webpack://AlignmentEditor/../../adapters/tufts/engine/aramorph.js","webpack://AlignmentEditor/../../adapters/tufts/engine/hazm.js","webpack://AlignmentEditor/../../adapters/tufts/engine/morpheusgrc.js","webpack://AlignmentEditor/../../adapters/tufts/engine/sedra.js","webpack://AlignmentEditor/../../adapters/tufts/engine/traces.js","webpack://AlignmentEditor/../../adapters/tufts/engine/whitakers.js","webpack://AlignmentEditor/../../adapters/tufts/engines-set.js","webpack://AlignmentEditor/../../client-adapters.js","webpack://AlignmentEditor/../../errors/adapter-error.js","webpack://AlignmentEditor/../../errors/adapter-warning.js","webpack://AlignmentEditor/../../errors/no-required-param-error.js","webpack://AlignmentEditor/../../errors/remote-error.js","webpack://AlignmentEditor/../../errors/wrong-method-error.js","webpack://AlignmentEditor/../../index.js","webpack://AlignmentEditor/../../locales/locales.js","webpack://AlignmentEditor/../../transformers/alpheios-lexicon-transformer.js","webpack://AlignmentEditor/../../transformers/import-morph-data.js","webpack://AlignmentEditor/../../external \"alpheios-data-models\"","webpack://AlignmentEditor/../../external \"alpheios-l10n\"","webpack://AlignmentEditor/../../external \"alpheios-messaging\"","webpack://AlignmentEditor/../../external \"papaparse\"","webpack://AlignmentEditor/../../webpack/bootstrap","webpack://AlignmentEditor/../../webpack/runtime/compat get default export","webpack://AlignmentEditor/../../webpack/runtime/define property getters","webpack://AlignmentEditor/../../webpack/runtime/hasOwnProperty shorthand","webpack://AlignmentEditor/../../webpack/runtime/make namespace object","webpack://AlignmentEditor/../../webpack/runtime/node module decorator","webpack://AlignmentEditor/../../webpack/startup","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/uuid/index.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/uuid/lib/bytesToUuid.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/uuid/lib/rng-browser.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/uuid/v1.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/uuid/v4.js","webpack://AlignmentEditor/../../arabic_language_model.js","webpack://AlignmentEditor/../../chinese_language_model.js","webpack://AlignmentEditor/../../constants.js","webpack://AlignmentEditor/../../definition-set.js","webpack://AlignmentEditor/../../definition.js","webpack://AlignmentEditor/../../driver.js","webpack://AlignmentEditor/../../dts/collection.js","webpack://AlignmentEditor/../../dts/resource.js","webpack://AlignmentEditor/../../feature.js","webpack://AlignmentEditor/../../feature_importer.js","webpack://AlignmentEditor/../../feature_list.js","webpack://AlignmentEditor/../../feature_type.js","webpack://AlignmentEditor/../../geez_language_model.js","webpack://AlignmentEditor/../../greek_language_model.js","webpack://AlignmentEditor/../../grm-feature.js","webpack://AlignmentEditor/../../homonym-group.js","webpack://AlignmentEditor/../../homonym.js","webpack://AlignmentEditor/../../inflection.js","webpack://AlignmentEditor/../../inflection_group.js","webpack://AlignmentEditor/../../inflection_grouping_key.js","webpack://AlignmentEditor/../../language_model.js","webpack://AlignmentEditor/../../language_model_factory.js","webpack://AlignmentEditor/../../languages/greek-chars.js","webpack://AlignmentEditor/../../latin_language_model.js","webpack://AlignmentEditor/../../lemma.js","webpack://AlignmentEditor/../../lexeme.js","webpack://AlignmentEditor/../../logging/logger.js","webpack://AlignmentEditor/../../options/option-item.js","webpack://AlignmentEditor/../../options/options.js","webpack://AlignmentEditor/../../persian_language_model.js","webpack://AlignmentEditor/../../ps-events/ps-event-data.js","webpack://AlignmentEditor/../../ps-events/ps-event.js","webpack://AlignmentEditor/../../resource_provider.js","webpack://AlignmentEditor/../../storages/defaults-loader.js","webpack://AlignmentEditor/../../storages/extension-sync-storage.js","webpack://AlignmentEditor/../../storages/local-storage-area.js","webpack://AlignmentEditor/../../storages/remote-auth-storage-area.js","webpack://AlignmentEditor/../../storages/storage-adapter.js","webpack://AlignmentEditor/../../storages/temp-storage-area.js","webpack://AlignmentEditor/../../syriac_language_model.js","webpack://AlignmentEditor/../../texts/author.js","webpack://AlignmentEditor/../../texts/text-work.js","webpack://AlignmentEditor/../../texts/word-usage-example.js","webpack://AlignmentEditor/../../translation.js","webpack://AlignmentEditor/../../treebank_data_item.js","webpack://AlignmentEditor/../../w3c/text-quote-selector.js","webpack://AlignmentEditor/../../word-item.js","webpack://AlignmentEditor/../../word-list.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/fast-memoize/src/index.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/intl-messageformat-parser/lib/index.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/intl-messageformat-parser/lib/src/normalize.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/intl-messageformat-parser/lib/src/parser.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/intl-messageformat-parser/lib/src/skeleton.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/intl-messageformat-parser/lib/src/types.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/intl-messageformat-parser/node_modules/tslib/tslib.es6.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/intl-messageformat/lib/index.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/intl-messageformat/lib/src/core.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/intl-messageformat/lib/src/error.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/intl-messageformat/lib/src/formatters.js","webpack://AlignmentEditor/../../node_modules/source-map-loader/node_modules/intl-messageformat/node_modules/tslib/tslib.es6.js","webpack://AlignmentEditor/../../l10n.js","webpack://AlignmentEditor/../../message-bundle.js","webpack://AlignmentEditor/../../message.js","webpack://AlignmentEditor/../node_modules/alpheios-messaging/dist/prod/alpheios-messaging.min.js","webpack://AlignmentEditor/../node_modules/emitter-component/index.js","webpack://AlignmentEditor/../node_modules/fast-memoize/src/index.js","webpack://AlignmentEditor/../node_modules/intl-messageformat/lib/index.js","webpack://AlignmentEditor/../node_modules/intl-messageformat/lib/src/core.js","webpack://AlignmentEditor/../node_modules/intl-messageformat/lib/src/error.js","webpack://AlignmentEditor/../node_modules/intl-messageformat/lib/src/formatters.js","webpack://AlignmentEditor/../node_modules/papaparse/papaparse.js","webpack://AlignmentEditor/../node_modules/stream/index.js","webpack://AlignmentEditor/../node_modules/tslib/tslib.es6.js","webpack://AlignmentEditor/../node_modules/uuid/index.js","webpack://AlignmentEditor/../node_modules/uuid/lib/bytesToUuid.js","webpack://AlignmentEditor/../node_modules/uuid/lib/rng-browser.js","webpack://AlignmentEditor/../node_modules/uuid/v1.js","webpack://AlignmentEditor/../node_modules/uuid/v4.js","webpack://AlignmentEditor/../node_modules/v-video-embed/dist/video-embed.min.js","webpack://AlignmentEditor/../node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://AlignmentEditor/../node_modules/vue/dist/vue.runtime.esm.js","webpack://AlignmentEditor/../node_modules/vuex/dist/vuex.esm.js","webpack://AlignmentEditor/./lib/controllers/aligned-groups-controller.js","webpack://AlignmentEditor/./lib/controllers/app-controller.js","webpack://AlignmentEditor/./lib/controllers/detect-text-controller.js","webpack://AlignmentEditor/./lib/controllers/download-controller.js","webpack://AlignmentEditor/./lib/controllers/history-controller.js","webpack://AlignmentEditor/./lib/controllers/settings-controller.js","webpack://AlignmentEditor/./lib/controllers/texts-controller.js","webpack://AlignmentEditor/./lib/controllers/tokenize-controller.js","webpack://AlignmentEditor/./lib/controllers/tokens-edit-controller.js","webpack://AlignmentEditor/./lib/controllers/upload-controller.js","webpack://AlignmentEditor/./lib/data/actions/alignment-group-actions.js","webpack://AlignmentEditor/./lib/data/actions/tokens-edit-actions.js","webpack://AlignmentEditor/./lib/data/aligned-text.js","webpack://AlignmentEditor/./lib/data/alignment-group.js","webpack://AlignmentEditor/./lib/data/alignment.js","webpack://AlignmentEditor/./lib/data/history/alignment-group-history.js","webpack://AlignmentEditor/./lib/data/history/alignment-group-step.js","webpack://AlignmentEditor/./lib/data/history/editor-history.js","webpack://AlignmentEditor/./lib/data/history/history-step.js","webpack://AlignmentEditor/./lib/data/history/tokens-edit-history.js","webpack://AlignmentEditor/./lib/data/history/tokens-edit-step.js","webpack://AlignmentEditor/./lib/data/langs/langs.js","webpack://AlignmentEditor/./lib/data/metadata-term.js","webpack://AlignmentEditor/./lib/data/metadata.js","webpack://AlignmentEditor/./lib/data/segment.js","webpack://AlignmentEditor/./lib/data/source-text.js","webpack://AlignmentEditor/./lib/data/token.js","webpack://AlignmentEditor/./lib/download/download-file-csv.js","webpack://AlignmentEditor/./lib/download/download-file-html.js","webpack://AlignmentEditor/./lib/download/download-file-json.js","webpack://AlignmentEditor/./lib/l10n/l10n-singleton.js","webpack://AlignmentEditor/./lib/l10n/l10n.js","webpack://AlignmentEditor/./lib/l10n/message-bundle.js","webpack://AlignmentEditor/./lib/l10n/message.js","webpack://AlignmentEditor/./lib/notifications/notification-singleton.js","webpack://AlignmentEditor/./lib/store/store-definition.js","webpack://AlignmentEditor/./lib/tokenizers/alpheios-remote-tokenizer.js","webpack://AlignmentEditor/./lib/tokenizers/simple-local-tokenizer.js","webpack://AlignmentEditor/./lib/upload/upload-dts-api.js","webpack://AlignmentEditor/./lib/upload/upload-file-csv.js","webpack://AlignmentEditor/./lib/utility/scroll-utility.js","webpack://AlignmentEditor/./locales/locales.js","webpack://AlignmentEditor/vue/align-editor/align-editor-view-mode.vue","webpack://AlignmentEditor/vue/align-editor/align-editor.vue","webpack://AlignmentEditor/vue/align-editor/segment-block.vue","webpack://AlignmentEditor/vue/align-editor/token-block.vue","webpack://AlignmentEditor/vue/app.vue","webpack://AlignmentEditor/vue/common/editor-tabs.vue","webpack://AlignmentEditor/vue/common/modal.vue","webpack://AlignmentEditor/vue/common/tooltip.vue","webpack://AlignmentEditor/vue/common/waiting.vue","webpack://AlignmentEditor/vue/initial-screen.vue","webpack://AlignmentEditor/vue/main-menu.vue","webpack://AlignmentEditor/vue/notification-bar.vue","webpack://AlignmentEditor/vue/options/option-item-block.vue","webpack://AlignmentEditor/vue/options/options-block.vue","webpack://AlignmentEditor/vue/text-editor/actions-menu-text-editor.vue","webpack://AlignmentEditor/vue/text-editor/direction-options-block.vue","webpack://AlignmentEditor/vue/text-editor/dts-api-pagination.vue","webpack://AlignmentEditor/vue/text-editor/language-options-block.vue","webpack://AlignmentEditor/vue/text-editor/metadata-block.vue","webpack://AlignmentEditor/vue/text-editor/metadata-info.vue","webpack://AlignmentEditor/vue/text-editor/metadata-term-block.vue","webpack://AlignmentEditor/vue/text-editor/text-editor-single-block.vue","webpack://AlignmentEditor/vue/text-editor/text-editor.vue","webpack://AlignmentEditor/vue/text-editor/tokenize-options-block.vue","webpack://AlignmentEditor/vue/text-editor/upload-dtsapi-block.vue","webpack://AlignmentEditor/vue/tokens-editor/actions-button-token-edit.vue","webpack://AlignmentEditor/vue/tokens-editor/actions-menu-token-edit.vue","webpack://AlignmentEditor/vue/tokens-editor/actions-menu-tokens-editor.vue","webpack://AlignmentEditor/vue/tokens-editor/empty-tokens-input.vue","webpack://AlignmentEditor/vue/tokens-editor/segment-edit-block.vue","webpack://AlignmentEditor/vue/tokens-editor/token-edit-block.vue","webpack://AlignmentEditor/vue/tokens-editor/tokens-editor-inner-block.vue","webpack://AlignmentEditor/vue/tokens-editor/tokens-editor.vue","webpack://AlignmentEditor/./vue/align-editor/align-editor-view-mode.vue?77f6","webpack://AlignmentEditor/./vue/align-editor/align-editor.vue?aaee","webpack://AlignmentEditor/./vue/align-editor/segment-block.vue?91ef","webpack://AlignmentEditor/./vue/align-editor/token-block.vue?a5a4","webpack://AlignmentEditor/./vue/app.vue?1c05","webpack://AlignmentEditor/./vue/common/editor-tabs.vue?7e96","webpack://AlignmentEditor/./vue/common/modal.vue","webpack://AlignmentEditor/./vue/common/tooltip.vue?78bd","webpack://AlignmentEditor/./vue/common/waiting.vue?bd9d","webpack://AlignmentEditor/./vue/initial-screen.vue?40e0","webpack://AlignmentEditor/./vue/main-menu.vue?fde5","webpack://AlignmentEditor/./vue/notification-bar.vue?0958","webpack://AlignmentEditor/./vue/options/option-item-block.vue?a947","webpack://AlignmentEditor/./vue/options/options-block.vue?537d","webpack://AlignmentEditor/./vue/text-editor/actions-menu-text-editor.vue?27ab","webpack://AlignmentEditor/./vue/text-editor/direction-options-block.vue?9592","webpack://AlignmentEditor/./vue/text-editor/dts-api-pagination.vue?4a3d","webpack://AlignmentEditor/./vue/text-editor/language-options-block.vue","webpack://AlignmentEditor/./vue/text-editor/metadata-block.vue","webpack://AlignmentEditor/./vue/text-editor/metadata-info.vue?9f84","webpack://AlignmentEditor/./vue/text-editor/metadata-term-block.vue?343a","webpack://AlignmentEditor/./vue/text-editor/text-editor-single-block.vue?4c92","webpack://AlignmentEditor/./vue/text-editor/text-editor.vue?9dd1","webpack://AlignmentEditor/./vue/text-editor/tokenize-options-block.vue?d3f3","webpack://AlignmentEditor/./vue/text-editor/upload-dtsapi-block.vue?a30e","webpack://AlignmentEditor/./vue/tokens-editor/actions-button-token-edit.vue?177f","webpack://AlignmentEditor/./vue/tokens-editor/actions-menu-token-edit.vue?ea82","webpack://AlignmentEditor/./vue/tokens-editor/actions-menu-tokens-editor.vue?b569","webpack://AlignmentEditor/./vue/tokens-editor/empty-tokens-input.vue?9e56","webpack://AlignmentEditor/./vue/tokens-editor/segment-edit-block.vue?079f","webpack://AlignmentEditor/./vue/tokens-editor/token-edit-block.vue?e2b6","webpack://AlignmentEditor/./vue/tokens-editor/tokens-editor-inner-block.vue?13fb","webpack://AlignmentEditor/./vue/tokens-editor/tokens-editor.vue?dd38","webpack://AlignmentEditor/./vue/align-editor/align-editor-view-mode.vue?c0fe","webpack://AlignmentEditor/./vue/align-editor/align-editor.vue?66e8","webpack://AlignmentEditor/./vue/align-editor/segment-block.vue?a7c4","webpack://AlignmentEditor/./vue/align-editor/token-block.vue?5611","webpack://AlignmentEditor/./vue/app.vue?fe7f","webpack://AlignmentEditor/./vue/common/editor-tabs.vue?8867","webpack://AlignmentEditor/./vue/common/modal.vue?841f","webpack://AlignmentEditor/./vue/common/tooltip.vue?0ea6","webpack://AlignmentEditor/./vue/common/waiting.vue?0b38","webpack://AlignmentEditor/./vue/initial-screen.vue?12df","webpack://AlignmentEditor/./vue/main-menu.vue?5a12","webpack://AlignmentEditor/./vue/notification-bar.vue?ffc3","webpack://AlignmentEditor/./vue/options/option-item-block.vue?37ae","webpack://AlignmentEditor/./vue/options/options-block.vue?4e27","webpack://AlignmentEditor/./vue/text-editor/actions-menu-text-editor.vue?5e56","webpack://AlignmentEditor/./vue/text-editor/direction-options-block.vue?6c29","webpack://AlignmentEditor/./vue/text-editor/dts-api-pagination.vue?5ca6","webpack://AlignmentEditor/./vue/text-editor/language-options-block.vue?8ce5","webpack://AlignmentEditor/./vue/text-editor/metadata-block.vue?0863","webpack://AlignmentEditor/./vue/text-editor/metadata-info.vue?4f85","webpack://AlignmentEditor/./vue/text-editor/metadata-term-block.vue?b04c","webpack://AlignmentEditor/./vue/text-editor/text-editor-single-block.vue?490a","webpack://AlignmentEditor/./vue/text-editor/text-editor.vue?77e4","webpack://AlignmentEditor/./vue/text-editor/tokenize-options-block.vue?3a49","webpack://AlignmentEditor/./vue/text-editor/upload-dtsapi-block.vue?16a0","webpack://AlignmentEditor/./vue/tokens-editor/actions-button-token-edit.vue?18c8","webpack://AlignmentEditor/./vue/tokens-editor/actions-menu-token-edit.vue?a8ba","webpack://AlignmentEditor/./vue/tokens-editor/actions-menu-tokens-editor.vue?4e4b","webpack://AlignmentEditor/./vue/tokens-editor/empty-tokens-input.vue?fb42","webpack://AlignmentEditor/./vue/tokens-editor/segment-edit-block.vue?5385","webpack://AlignmentEditor/./vue/tokens-editor/token-edit-block.vue?794f","webpack://AlignmentEditor/./vue/tokens-editor/tokens-editor-inner-block.vue?87ec","webpack://AlignmentEditor/./vue/tokens-editor/tokens-editor.vue?873b","webpack://AlignmentEditor/./vue/align-editor/align-editor-view-mode.vue?a673","webpack://AlignmentEditor/./vue/align-editor/align-editor.vue?f589","webpack://AlignmentEditor/./vue/align-editor/segment-block.vue?64bc","webpack://AlignmentEditor/./vue/align-editor/token-block.vue?6ef7","webpack://AlignmentEditor/./vue/app.vue?a38a","webpack://AlignmentEditor/./vue/common/editor-tabs.vue?decf","webpack://AlignmentEditor/./vue/common/modal.vue?bb16","webpack://AlignmentEditor/./vue/common/tooltip.vue?b5fb","webpack://AlignmentEditor/./vue/common/waiting.vue?fecc","webpack://AlignmentEditor/./vue/initial-screen.vue?d2a4","webpack://AlignmentEditor/./vue/main-menu.vue?4476","webpack://AlignmentEditor/./vue/notification-bar.vue?6ab4","webpack://AlignmentEditor/./vue/options/option-item-block.vue?d3ac","webpack://AlignmentEditor/./vue/options/options-block.vue?54bb","webpack://AlignmentEditor/./vue/text-editor/actions-menu-text-editor.vue?75e1","webpack://AlignmentEditor/./vue/text-editor/direction-options-block.vue?83f1","webpack://AlignmentEditor/./vue/text-editor/dts-api-pagination.vue?bce4","webpack://AlignmentEditor/./vue/text-editor/language-options-block.vue?af49","webpack://AlignmentEditor/./vue/text-editor/metadata-block.vue?5329","webpack://AlignmentEditor/./vue/text-editor/metadata-info.vue?9641","webpack://AlignmentEditor/./vue/text-editor/metadata-term-block.vue?b7ad","webpack://AlignmentEditor/./vue/text-editor/text-editor-single-block.vue?e575","webpack://AlignmentEditor/./vue/text-editor/text-editor.vue?3d2a","webpack://AlignmentEditor/./vue/text-editor/tokenize-options-block.vue?4421","webpack://AlignmentEditor/./vue/text-editor/upload-dtsapi-block.vue?98b3","webpack://AlignmentEditor/./vue/tokens-editor/actions-button-token-edit.vue?8ba4","webpack://AlignmentEditor/./vue/tokens-editor/actions-menu-token-edit.vue?9380","webpack://AlignmentEditor/./vue/tokens-editor/actions-menu-tokens-editor.vue?50d8","webpack://AlignmentEditor/./vue/tokens-editor/empty-tokens-input.vue?24ba","webpack://AlignmentEditor/./vue/tokens-editor/segment-edit-block.vue?124a","webpack://AlignmentEditor/./vue/tokens-editor/token-edit-block.vue?3a4c","webpack://AlignmentEditor/./vue/tokens-editor/tokens-editor-inner-block.vue?e6dc","webpack://AlignmentEditor/./vue/tokens-editor/tokens-editor.vue?c33f","webpack://AlignmentEditor/./inline-icons/delete.svg","webpack://AlignmentEditor/./inline-icons/down-arrow.svg","webpack://AlignmentEditor/./inline-icons/download.svg","webpack://AlignmentEditor/./inline-icons/enter.svg","webpack://AlignmentEditor/./inline-icons/merge-left.svg","webpack://AlignmentEditor/./inline-icons/merge-right.svg","webpack://AlignmentEditor/./inline-icons/navbar.svg","webpack://AlignmentEditor/./inline-icons/next.svg","webpack://AlignmentEditor/./inline-icons/pen.svg","webpack://AlignmentEditor/./inline-icons/prev.svg","webpack://AlignmentEditor/./inline-icons/remove-enter.svg","webpack://AlignmentEditor/./inline-icons/split.svg","webpack://AlignmentEditor/./inline-icons/up-arrow.svg","webpack://AlignmentEditor/./inline-icons/upload.svg","webpack://AlignmentEditor/./inline-icons/x-close.svg","webpack://AlignmentEditor/webpack/bootstrap","webpack://AlignmentEditor/webpack/runtime/compat get default export","webpack://AlignmentEditor/webpack/runtime/define property getters","webpack://AlignmentEditor/webpack/runtime/global","webpack://AlignmentEditor/webpack/runtime/hasOwnProperty shorthand","webpack://AlignmentEditor/webpack/runtime/make namespace object","webpack://AlignmentEditor/./index.js"],"names":[],"mappings":";;;;;;;;;AAAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB;AACjB;AACA;AACA,qCAAqC;AACrC;AACA,mCAAmC;AACnC;AACA,sCAAsC,KAAK;AAC3C;AACA,wCAAwC,KAAK;AAC7C;AACA,0CAA0C,QAAQ;AAClD;AACA,yCAAyC,cAAc;AACvD;AACA;AACA;AACA;AACA;AACA,4DAA4D,gBAAgB;AAC5E;AACA,+DAA+D,cAAc;AAC7E;AACA,4DAA4D;AAC5D;AACA,gDAAgD,YAAY;AAC5D;AACA,iFAAiF,oBAAoB;AACrG;AACA,uEAAuE,uBAAuB;AAC9F;AACA,yDAAyD,YAAY;AACrE;AACA,4EAA4E,YAAY;AACxF;AACA,yEAAyE,mBAAmB;AAC5F;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA,qEAAqE,iBAAiB,GAAG;AACzF;AACA;AACA;AACA,cAAc,kBAAkB,EAAE,MAAM,GAAG;AAC3C;AACA;AACA;AACA,cAAc,oBAAoB,MAAM,QAAQ,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC,iBAAiB,KAAK;;;;;;;;;;;;ACjE9C;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,aAAa;AACb,cAAc,mBAAO,CAAC,iDAAO;AAC7B,cAAc,mBAAO,CAAC,4EAAS;AAC/B,eAAe,mBAAO,CAAC,8EAAU;AACjC,cAAc,mBAAO,CAAC,4EAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,0BAA0B,WAAW;AACrC,6BAA6B,6BAA6B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,qBAAqB,mBAAO,CAAC,4EAAS;;;;;;;;;;;;AC9CzB;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc;AACd,cAAc,mBAAO,CAAC,iDAAO;AAC7B,cAAc,mBAAO,CAAC,4EAAS;AAC/B,cAAc,mBAAO,CAAC,4EAAS;AAC/B,wBAAwB,mBAAO,CAAC,gGAAmB;AACnD,4BAA4B,mBAAO,CAAC,6FAA+B;AACnE;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY,IAAI,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uBAAuB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,YAAY,IAAI,eAAe;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+DAA+D;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,eAAe;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,KAAK;AACvC,0BAA0B;AAC1B,4BAA4B,MAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,mFAAmF;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA,kCAAkC,+DAA+D;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,6IAA6I;AAC7I;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB,IAAI,QAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,qDAAqD;AACrD;AACA;AACA,oBAAoB,MAAM;AAC1B,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,YAAY;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,eAAe;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC3uCa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,yBAAyB,GAAG,iCAAiC,GAAG,mCAAmC;AACnG;AACA,mCAAmC;AACnC,iCAAiC;AACjC,yBAAyB;;;;;;;;;;;;ACNZ;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,2BAA2B,GAAG,4BAA4B,GAAG,0BAA0B,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,sBAAsB,GAAG,uBAAuB,GAAG,uBAAuB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,uBAAuB,GAAG,yBAAyB,GAAG,wBAAwB,GAAG,qBAAqB,GAAG,YAAY;AAC9X;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,IAAI;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B,YAAY,KAAK;AAC5C;AACA;AACA;AACA;AACA,CAAC,4CAA4C,qBAAqB,KAAK;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;;;;;;;;;;;;AC7Gd;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,gCAAgC,IAAI,GAAG,IAAI,MAAM,IAAI,cAAc,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,OAAO,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,WAAW,IAAI;AACrK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,6BAA6B;;;;;;;;;;;;AC5HhB;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,iDAAO;AAC7B,qBAAqB,mBAAO,CAAC,+EAAa;AAC1C,qBAAqB,mBAAO,CAAC,yEAAU;;;;;;;;;;;;ACJ1B;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,2BAA2B,GAAG,qCAAqC;AACnE,cAAc,mBAAO,CAAC,iDAAO;AAC7B,wBAAwB,mBAAO,CAAC,2FAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,qBAAqB,EAAE;AACrD;AACA,mDAAmD,4BAA4B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,uBAAuB;AACpE;AACA;AACA;AACA;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,sBAAsB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,YAAY,yBAAyB,6CAA6C,6CAA6C,oCAAoC,EAAE,IAAI;AACvP;AACA;AACA,8EAA8E,YAAY,0BAA0B,6CAA6C,6CAA6C,oCAAoC,EAAE,IAAI;AACxP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA,2BAA2B;;;;;;;;;;;;AChSd;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,yBAAyB;AACzB;AACA,yBAAyB;;;;;;;;;;;ACJzB;AACA,IAAI,IAAyD;AAC7D,2BAA2B,mBAAO,CAAC,6GAAsB,GAAG,mBAAO,CAAC,wFAAe,GAAG,mBAAO,CAAC,kGAAoB,GAAG,mBAAO,CAAC,yDAAW;AACxI,MAAM,aAKJ;AACF,CAAC;AACD,O;;;;;;;;;ACVA,iBAAiB,8FAAsB,C;;;;;;;;;;;ACA1B;;AAEb,YAAY,+BAAO,CAAC,4DAAY;AAChC,aAAa,+BAAO,CAAC,wEAAkB;AACvC,cAAc,+BAAO,CAAC,gFAAsB;AAC5C,eAAe,+BAAO,CAAC,kFAAuB;AAC9C,oBAAoB,+BAAO,CAAC,oFAAuB;AACnD,mBAAmB,+BAAO,CAAC,0FAA2B;AACtD,sBAAsB,+BAAO,CAAC,gGAA8B;AAC5D,kBAAkB,+BAAO,CAAC,gFAAqB;;AAE/C;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;AAC5C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;AClLa;;AAEb,YAAY,+BAAO,CAAC,yDAAS;AAC7B,WAAW,+BAAO,CAAC,uEAAgB;AACnC,YAAY,+BAAO,CAAC,mEAAc;AAClC,kBAAkB,+BAAO,CAAC,+EAAoB;AAC9C,eAAe,+BAAO,CAAC,+DAAY;;AAEnC;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,eAAe,+BAAO,CAAC,yEAAiB;AACxC,oBAAoB,+BAAO,CAAC,mFAAsB;AAClD,iBAAiB,+BAAO,CAAC,6EAAmB;;AAE5C;AACA;AACA;AACA;AACA,eAAe,+BAAO,CAAC,2EAAkB;;AAEzC;AACA,qBAAqB,+BAAO,CAAC,uFAAwB;;AAErD;;AAEA;AACA,sBAAsB;;;;;;;;;;;;ACvDT;;AAEb;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;AClBa;;AAEb,aAAa,gCAAO,CAAC,kEAAU;;AAE/B;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxDa;;AAEb;AACA;AACA;;;;;;;;;;;;ACJa;;AAEb,YAAY,gCAAO,CAAC,4DAAY;AAChC,eAAe,gCAAO,CAAC,gFAAqB;AAC5C,yBAAyB,gCAAO,CAAC,wFAAsB;AACvD,sBAAsB,gCAAO,CAAC,kFAAmB;AACjD,kBAAkB,gCAAO,CAAC,0EAAe;;AAEzC;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA,yBAAyB;AACzB,KAAK;AACL;AACA,CAAC;;AAED;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED;;;;;;;;;;;;AC9Fa;;AAEb,YAAY,gCAAO,CAAC,4DAAY;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;;ACnDa;;AAEb,oBAAoB,gCAAO,CAAC,0FAA0B;AACtD,kBAAkB,gCAAO,CAAC,sFAAwB;;AAElD;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBa;;AAEb,mBAAmB,gCAAO,CAAC,4EAAgB;;AAE3C;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjBa;;AAEb,YAAY,gCAAO,CAAC,4DAAY;AAChC,oBAAoB,gCAAO,CAAC,8EAAiB;AAC7C,eAAe,gCAAO,CAAC,8EAAoB;AAC3C,eAAe,gCAAO,CAAC,gEAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;;;;;;;;;;;AC9Ea;;AAEb;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzCa;;AAEb,YAAY,gCAAO,CAAC,0DAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,2BAA2B;AAC3B,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;;;;;;;;;;;ACtFa;;AAEb,kBAAkB,gCAAO,CAAC,0EAAe;;AAEzC;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACxBa;;AAEb,YAAY,gCAAO,CAAC,4DAAY;;AAEhC;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;;ACnBa;;AAEb,YAAY,gCAAO,CAAC,yDAAS;AAC7B,0BAA0B,gCAAO,CAAC,qGAA+B;;AAEjE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,gCAAO,CAAC,uEAAgB;AACtC,GAAG;AACH;AACA,cAAc,gCAAO,CAAC,wEAAiB;AACvC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,OAAO,YAAY;AACnB;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;ACjGa;;AAEb;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACVa;;AAEb,YAAY,gCAAO,CAAC,4DAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;ACrEa;;AAEb;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACba;;AAEb,YAAY,gCAAO,CAAC,4DAAY;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0CAA0C;AAC1C,SAAS;;AAET;AACA,4DAA4D,wBAAwB;AACpF;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,kCAAkC;AAClC,+BAA+B,aAAa,EAAE;AAC9C;AACA;AACA,KAAK;AACL;;;;;;;;;;;;ACpDa;;AAEb;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACba;;AAEb;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;;;;;;;;;;;ACVa;;AAEb,YAAY,gCAAO,CAAC,4DAAY;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;ACnEa;;AAEb,YAAY,gCAAO,CAAC,0DAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACXa;;AAEb,YAAY,gCAAO,CAAC,4DAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,eAAe;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;;ACpDa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1Ba;;AAEb,WAAW,gCAAO,CAAC,uEAAgB;;AAEnC;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS,GAAG,SAAS;AAC5C,2BAA2B;AAC3B;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,4BAA4B;AAC5B,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yBAAyB,wCAAwC;AACjE;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;;AAEA;AACA;AACA,uDAAuD,sCAAsC;AAC7F;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,gDAAgD;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2BAA2B;AACpC;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,CAAC,SAAS;;AAEV,IAAI,MAA4B;AAChC,SAAS,IAA0C,EAAE,mCAAO,aAAa,mBAAmB;AAAA,kGAAC;;;;;;;;;;;;;;;;;;;;;;ACjP4E;AAC9G;;AAEY;AACtC;;AAEjC,sCAAsC,sEAAW;AACjD;AACA;AACA,aAAa,OAAO;AACpB;AACA,0BAA0B;AAC1B;AACA,4CAA4C,wEAAa;AACzD,mBAAmB,MAAM,oEAAkB,OAAO,oEAAkB;AACpE;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA,+DAA+D,gBAAgB;AAC/E;AACA;AACA;AACA,gDAAgD,cAAc;;AAE9D;AACA;AACA;;AAEA;AACA,yBAAyB,4FAAyB;;AAElD,wBAAwB,4DAAqB;AAC7C,mEAAmE,QAAQ,mBAAmB;;AAE9F;AACA;AACA,OAAO;AACP,6EAA6E,gBAAgB;AAC7F;AACA,KAAK;AACL,sEAAsE,yBAAyB;AAC/F;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,yBAAyB,kEAAgB;;AAEzC;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,uDAAK;AACzB,yBAAyB,wDAAM;AAC/B,yBAAyB,4DAAU;AACnC;AACA,8BAA8B,yDAAO,CAAC,wEAAsB;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,+DAAa;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAO,EAAE,2EAAyB;AACjD;AACA;;AAEA,iEAAe,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;ACvHqB;AACmC;AACf;AACT;;AAEC;AAG5C;;AAE3B,sCAAsC,sEAAW;AACjD;AACA;AACA,aAAa,OAAO;AACpB;AACA,0BAA0B;AAC1B;AACA;AACA,4CAA4C,wEAAa;AACzD;;AAEA;AACA,SAAS,2EAA2B;AACpC,MAAM,8EAA8B,kBAAkB,uEAAW;AACjE;AACA,WAAW,2EAA2B;AACtC;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,wBAAwB,8DAAc;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,8DAAc;AACnF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,eAAe,EAAE;AAC1C;AACA;AACA,0DAA0D,8DAAc;AACxE,KAAK;AACL,8BAA8B,+DAAe;AAC7C;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,aAAa;AAC5F;AACA;AACA,8BAA8B,uFAAqC;AACnE;AACA,iFAAiF,oCAAoC;AACrH;AACA;AACA,yBAAyB,kFAAU;AACnC;AACA;AACA,kEAAkE,mEAAiB;AACnF,mEAAmE,mEAAiB;AACpF,kEAAkE,mEAAiB;AACnF;AACA;AACA,SAAS;AACT,qCAAqC,0FAA0B;AAC/D;AACA;AACA;AACA;AACA,6CAA6C,oEAAkB,YAAY,qEAAmB;AAC9F;AACA,+CAA+C,oEAAkB,oCAAoC,oEAAkB,aAAa,2EAAyB;AAC7J,2DAA2D,yDAAO,CAAC,oEAAkB,EAAE,gFAA8B;AACrH;AACA;AACA,OAAO;AACP,sEAAsE,gBAAgB;AACtF;AACA,KAAK;AACL,sEAAsE,yBAAyB;AAC/F;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,+CAA+C,8DAAc;AAC7D,4BAA4B,YAAY,mCAAmC;AAC3E,gEAAgE,8DAAc;AAC9E;AACA,KAAK;AACL,8BAA8B,+DAAe;AAC7C;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,gEAAgE,8DAAc;AAC9E;AACA,KAAK;AACL,8BAA8B,+DAAe;AAC7C;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5Kb;AACoB;AACT;AACuB;AACO;AACN;;AAER;AACM;AACA;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+CAAI;AACxB,mBAAmB,oEAAI,EAAE,yEAAa;AACtC,mBAAmB,oEAAI,EAAE,yEAAa;AACtC,iBAAiB,yEAAa;AAC9B;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA,sBAAsB,qEAAY;AAClC;AACA;;AAEA;AACA,sBAAsB,uEAAW;AACjC;AACA;;AAEA;AACA,wBAAwB,0EAAc;AACtC;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;AACA,kBAAkB;AAClB,SAAS;AACT,OAAO;AACP,gCAAgC;AAChC;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,iBAAiB,OAAO;AACxB;AACA,cAAc;AACd;AACA,qCAAqC,eAAe;AACpD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+EAA+E,0CAA0C;AACzH;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,0EAA0E,WAAW;AACrF;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,iBAAiB,OAAO;AACxB;AACA,iBAAiB,OAAO;AACxB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,WAAW;AACX;AACA,8EAA8E,WAAW;AACzF;AACA;AACA,WAAW;AACX,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,iBAAiB,OAAO;AACxB,cAAc;AACd;AACA;AACA;AACA,0CAA0C,iCAAiC;AAC3E;AACA,0BAA0B,4CAAK;AAC/B;AACA,OAAO;AACP,0EAA0E,WAAW;AACrF;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,oEAAkB;AACxB,KAAK;AACL;AACA;AACA;AACA,MAAM,oEAAkB;AACxB,KAAK;AACL;AACA,MAAM,oEAAkB;AACxB;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,iBAAiB,OAAO;AACxB;AACA,iBAAiB,OAAO;AACxB,cAAc;AACd;AACA,gCAAgC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,OAAO;AACP,uEAAuE,yBAAyB;AAChG;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,iEAAe,WAAW;;;;;;;;;;;;;;;;;;;;;;AClO1B;AAC2D;AAC6C;AAG7E;;AAEpB;AACP;AACA;AACA;;AAEA;;AAEA,wCAAwC,sEAAW;AACnD,0BAA0B;AAC1B;AACA;AACA,wBAAwB,uEAAY;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,2EAA2B;AACpC,MAAM,8EAA8B,qBAAqB,uEAAW;AACpE;AACA;AACA;AACA,oBAAoB,sFAA0B;AAC9C,OAAO;AACP;AACA,6BAA6B,2EAA2B;AACxD;;AAEA,qBAAqB,QAAQ,iFAA+B;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD,yBAAyB,WAAW,EAAE,+BAA+B;AACrE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,8DAAc;AACxG,OAAO;AACP;AACA;AACA;;AAEA;AACA,4DAA4D,2DAA2D;AACvH;AACA;AACA;AACA;AACA,4DAA4D,2DAA2D;AACvH;AACA;AACA;AACA,KAAK;AACL,6DAA6D,yBAAyB;AACtF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,8DAAc;AACxG,OAAO;AACP;AACA;AACA,KAAK;AACL,6DAA6D,yBAAyB;AACtF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uDAAK;;AAE3B;AACA,gDAAgD,mFAAiC;AACjF;AACA;AACA;AACA,mCAAmC,EAAE,KAAK,UAAU,GAAG;AACvD,OAAO;AACP,2CAA2C,6EAA2B;AACtE,2CAA2C,oEAAkB;AAC7D,2FAA2F,uEAAqB;AAChH,iEAAiE,yEAAuB;;AAExF,yBAAyB,wDAAM;AAC/B,2DAA2D,4DAAU;AACrE;AACA;AACA,KAAK;AACL,sBAAsB,yDAAO;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,yDAAO;AACtB;AACA;;AAEA,iEAAe,yBAAyB;;;;;;;;;;;;;;;;;;;;;ACrKgC;AACc;;AAE2B;AACtD;;AAE3D,yCAAyC,sEAAW;AACpD;AACA;AACA,aAAa,OAAO;AACpB;AACA,0BAA0B;AAC1B;AACA,4CAA4C,yEAAa;AACzD,wBAAwB,kEAAgB;AACxC;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA,wDAAwD,EAAE,8EAAsB;;AAEhF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,yEAAyE,yBAAyB;AAClG;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB,YAAY,OAAO,YAAY,UAAU,OAAO,aAAa,SAAS,EAAE;AACxE;AACA,YAAY,OAAO,eAAe,0BAA0B,QAAQ,EAAE;AACtE,YAAY,OAAO,SAAS,EAAE;AAC9B,aAAa,OAAO;AACpB;AACA,eAAe,mBAAmB;AAClC,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,iBAAiB;AAChC;AACA;AACA,mDAAmD,iBAAiB,WAAW;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4FAA0C;AAC9D;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,4EAA4E,yBAAyB;AACrG;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB,YAAY,OAAO,YAAY,UAAU,OAAO,aAAa,SAAS,EAAE;AACxE;AACA,YAAY,OAAO,eAAe,0BAA0B,QAAQ,EAAE;AACtE,YAAY,OAAO,SAAS,EAAE;AAC9B,aAAa;AACb;AACA;AACA;AACA;AACA,cAAc,gBAAgB,EAAE,uCAAuC,EAAE,gBAAgB,EAAE,oBAAoB;AAC/G;;AAEA;AACA;AACA,YAAY,OAAO,YAAY,UAAU,OAAO,aAAa,SAAS,EAAE;AACxE;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB,GAAG,oBAAoB;AAC5D;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO,eAAe,0BAA0B,QAAQ,EAAE;AACtE,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oBAAoB,GAAG,2BAA2B,OAAO,+BAA+B;AACzG,KAAK;AACL,iBAAiB,oBAAoB,GAAG,2BAA2B;AACnE;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB,YAAY,SAAS;AACrB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,cAAc;AACd;AACA;AACA,mBAAmB;AACnB;AACA;AACA,KAAK;;AAEL,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL,qBAAqB,wDAAM;AAC3B;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,cAAc;AACd;AACA;AACA,mBAAmB;AACnB;AACA;AACA,KAAK;;AAEL,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL,uBAAuB,0DAAQ;AAC/B;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB,YAAY,SAAS;AACrB,YAAY,OAAO;AACnB,cAAc;AACd;AACA;AACA;AACA,+BAA+B,kEAAgB;AAC/C,MAAM,4FAA0C;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iEAAe,0BAA0B;;;;;;;;;;;;;;;;;;;ACnTkB;AACY;AACA;;AAExD,gCAAgC,sEAAW;AAC1D;AACA;AACA,aAAa,OAAO;AACpB;AACA,0BAA0B;AAC1B;AACA,4CAA4C,wEAAa;AACzD;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,kBAAkB,0BAA0B,gBAAgB;AAC5D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,2CAA2C,gBAAgB;AAC3D;AACA;AACA,KAAK;AACL,iEAAiE,yBAAyB;AAC1F;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA,gBAAgB,oBAAoB,KAAK,yBAAyB;AAClE;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,WAAW,qDAAqD;AAChE,WAAW,sDAAsD;AACjE,WAAW;AACX;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,4EAAS,SAAS,4EAAS;AAC1C;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACvF2D;;AAEV;;AAElC,4BAA4B,sEAAW;AACtD;AACA;AACA,aAAa,OAAO;AACpB;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,4DAA4D,yBAAyB;AACrF;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,4DAA4D,yBAAyB;AACrF;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB,8CAA8C,cAAc;AAC5D;AACA,KAAK;AACL,4DAA4D,yBAAyB;AACrF;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA,eAAe,IAAI,MAAM,GAAG;AAC5B;AACA;AACA,eAAe,IAAI,QAAQ,KAAK;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA,eAAe,IAAI,MAAM,GAAG;AAC5B;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA,oEAAoE,UAAU;AAC9E;AACA;;AAEA,aAAa,IAAI,MAAM,GAAG;;AAE1B;AACA,aAAa,kBAAkB;AAC/B,gBAAgB,WAAW,IAAI,OAAO,IAAI;;AAE1C,eAAe,IAAI,SAAS,MAAM;AAClC,gBAAgB,WAAW,IAAI,OAAO,IAAI;AAC1C;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA,+BAA+B,4DAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,aAAa,cAAc,qCAAqC,WAAW,GAAG,YAAY;AAC1F,aAAa,WAAW;AACxB;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACtLgG;AAC/D;;AAE0B;AACU;;AAErE;AACA;;AAEA,sCAAsC,sEAAW;AACjD;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,0BAA0B,mBAAmB;AAC7C;AACA;AACA,2DAA2D,sEAAa;AACxE,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB;AACA,6CAA6C;AAC7C;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB;AACA,4CAA4C;AAC5C;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,uEAAuE,yBAAyB;AAChG;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,yBAAyB;AACpG;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA,uEAAuE,yBAAyB;AAChG;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,qEAAqE,yBAAyB;AAC9F;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB,aAAa,QAAQ;AACrB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,gBAAgB;AAC5B,YAAY,QAAQ;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD,6CAA6C;AAC/F,yBAAyB,sDAAe,YAAY,gBAAgB,KAAK,mBAAmB;AAC5F;AACA;;AAEA;AACA;AACA,OAAO;AACP,uEAAuE,yBAAyB;AAChG;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,YAAY,IAAI;AAChB,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB;AACA;AACA;AACA,kBAAkB,uFAAoB;;AAEtC,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,aAAa;AACvD;AACA;AACA,iCAAiC,kEAAgB;AACjD,4BAA4B,4DAAU;AACtC,+BAA+B,2EAAyB;AACxD;AACA,WAAW;AACX,2EAA2E,yBAAyB;AACpG;AACA;AACA;AACA,OAAO;AACP;AACA,qEAAqE,WAAW;AAChF;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,IAAI;AAChB,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA,kBAAkB,uFAAoB;AACtC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB,SAAS,QAAQ,KAAK,UAAU,mBAAmB;AAC5E;AACA,OAAO;AACP,uBAAuB,SAAS,QAAQ,KAAK,sCAAsC,mBAAmB;AACtG;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,SAAS;AACrB,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,OAAO;AACP,kDAAkD,cAAc;AAChE;;AAEA;AACA;AACA;AACA;AACA,2EAA2E,iBAAiB;AAC5F;AACA,WAAW;AACX,iCAAiC,kEAAgB;AACjD,4BAA4B,4DAAU;AACtC,+BAA+B,2EAAyB;AACxD;AACA;AACA;AACA,SAAS;AACT;AACA,yEAAyE,yBAAyB;AAClG;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,SAAS;AACrB,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,OAAO;AACP,qDAAqD,cAAc;AACnE;;AAEA;AACA;AACA;AACA,yEAAyE,iBAAiB;AAC1F,SAAS;AACT,+BAA+B,kEAAgB;AAC/C,0BAA0B,4DAAU;AACpC,6BAA6B,2EAAyB;AACtD;AACA;AACA,OAAO;AACP,uEAAuE,yBAAyB;AAChG;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA,yBAAyB,4FAAyB;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,cAAc,IAAI;AAClB;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,IAAI;AACjB,aAAa,MAAM;AACnB,aAAa,cAAc;AAC3B,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oDAAoD,8BAA8B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,IAAI;AACjB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA,0BAA0B,OAAO;AACjC,KAAK;AACL;AACA;AACA;AACA;;AAEA,iEAAe,uBAAuB;;;;;;;;;;;;;;;;;;;;AC3hB8B;AACT;;AAEkB;;AAE7E,qCAAqC,sEAAW;AAChD;AACA;AACA,aAAa,OAAO;AACpB;AACA,0BAA0B;AAC1B;AACA,4CAA4C,qEAAa;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL,6DAA6D,yBAAyB;AACtF;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA;AACA,gBAAgB,0BAA0B,OAAO,yBAAyB,KAAK,KAAK,QAAQ,qBAAqB;AACjH;AACA;;AAEA;AACA,6BAA6B,6EAA2B;AACxD;AACA,KAAK,WAAW,6EAA2B,EAAE,4EAA0B;AACvE;AACA;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB,aAAa;AACb;AACA;AACA;AACA,kBAAkB,+FAA4B;AAC9C;AACA;AACA,wBAAwB,+FAA4B;AACpD;AACA;AACA;AACA,KAAK;;AAEL,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,sBAAsB;;;;;;;;;;;;;;;;;;;;ACjGoC;AACd;;AAEb;;AAE9C,0CAA0C,sEAAW;AACrD;AACA;AACA,aAAa,OAAO;AACpB;AACA,0BAA0B;AAC1B;AACA,4CAA4C,0EAAa;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP,gDAAgD,gBAAgB;AAChE;AACA;AACA,KAAK;AACL,kEAAkE,yBAAyB;AAC3F;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL,kEAAkE,yBAAyB;AAC3F;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA,yDAAyD,SAAS;;AAElE;AACA;AACA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,SAAS,wBAAwB,EAAE;AACzF;;AAEA;AACA,KAAK;AACL,eAAe,yDAAO;AACtB;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,0BAA0B,WAAW,6BAA6B;AACrF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,0BAA0B;AACpE;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO,IAAI;AAC1B;AACA;AACA;AACA,cAAc;AACd;AACA,YAAY;AACZ;AACA;;AAEA,iEAAe,2BAA2B;;;;;;;;;;;;;;;;;;;;ACpK+B;;AAEwB;AACtC;;AAE3D,+CAA+C,sEAAW;AAC1D;AACA;AACA,aAAa,OAAO;AACpB;AACA,0BAA0B;AAC1B;AACA,4CAA4C,0EAAa;AACzD;AACA,wBAAwB,kEAAgB;AACxC;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,4FAAyB;AAC5C;;AAEA;;AAEA;AACA,yEAAyE,0BAA0B;AACnG;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,8EAA4B;AACxC;AACA,SAAS;AACT,uEAAuE,yBAAyB;AAChG;AACA;AACA,KAAK;AACL,mEAAmE,yBAAyB;AAC5F;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iEAAe,gCAAgC;;;;;;;;;;;;;;;;;;;;;;ACvH+C;;AAEnC;AACmC;;AAE5B;AACH;;AAE/D,mCAAmC,sEAAW;AAC9C;AACA;AACA,aAAa,OAAO;AACpB;AACA,0BAA0B;AAC1B;AACA,4CAA4C,mEAAa;AACzD;AACA,yBAAyB,2EAAU;AACnC;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4FAAyB;;AAE9C,qBAAqB,0EAAwB;AAC7C;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,gFAAgF,oCAAoC;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6EAA6E,kCAAkC;AAC/G;AACA;AACA,qCAAqC,0FAA0B;AAC/D;;AAEA;AACA,8DAA8D,gDAAgD;AAC9G;AACA;;AAEA;AACA,+BAA+B,kFAAgC,CAAC,yEAAuB,EAAE,oEAAkB;AAC3G;AACA;AACA;AACA,KAAK;AACL,6DAA6D,yBAAyB;AACtF;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,YAAY,OAAO;AACnB,YAAY,KAAK;AACjB;AACA;AACA,qBAAqB,4FAAyB;AAC9C;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,iEAAe,oBAAoB;;;;;;;;;;;;;;;;;;;AC7GmC;AACxB;;AAE9C,iBAAiB,kFAAU,CAAC,qEAA0B;;AAEtD,iEAAe,IAAI;;;;;;;;;;;;;;;;;;;ACLmD;AACxB;;AAE9C,eAAe,kFAAU,CAAC,sEAA2B;;AAErD;AACA,wCAAwC,oCAAoC;;AAE5E,iEAAe,IAAI;;;;;;;;;;;;;;;;;;;ACRmD;AACxB;;AAE9C,eAAe,kFAAU,CAAC,oEAAyB;;AAEnD;AACA;AACA;AACA,GAAG,oEAAyB;AAC5B;AACA,mBAAmB,oEAAyB,YAAY,0EAA+B,4BAA4B,oEAAyB,YAAY,wEAA6B;AACrL;AACA;AACA,GAAG;AACH;AACA,GAAG,0EAA+B;AAClC;AACA;AACA;AACA;AACA,UAAU,qEAA0B;AACpC,8BAA8B,oEAAyB,YAAY,0EAA+B;AAClG,+BAA+B,yDAAc,CAAC,0EAA+B,EAAE,4EAAiC,EAAE,+EAAoC;AACtJ,KAAK,YAAY,qEAA0B;AAC3C,8BAA8B,oEAAyB,YAAY,0EAA+B;AAClG,+BAA+B,yDAAc,CAAC,0EAA+B,EAAE,4EAAiC,EAAE,+EAAoC;AACtJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,sEAA2B;AAC3C,+BAA+B,0EAA+B,OAAO,yEAA8B;;AAEnG,gBAAgB,0EAA+B;AAC/C,sBAAsB,mEAAwB,OAAO,mEAAwB;;AAE7E;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,sBAAsB,wEAA6B;AACnD,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED,iEAAe,IAAI;;;;;;;;;;;;;;;;;;;AC3DmD;AACxB;;AAE9C,iBAAiB,kFAAU,CAAC,qEAA0B;;AAEtD;AACA;AACA;AACA,0BAA0B,oEAAyB;AACnD,CAAC;;AAED;AACA;AACA,6CAA6C,6EAAkC;AAC/E;AACA,aAAa,4DAAiB;AAC9B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED,iEAAe,IAAI;;;;;;;;;;;;;;;;;;;ACjCmD;AACxB;;AAE9C,iBAAiB,kFAAU,CAAC,mEAAwB;;AAEpD,iEAAe,IAAI;;;;;;;;;;;;;;;;;;;ACLmD;AACxB;;AAE9C,iBAAiB,kFAAU,CAAC,oEAAyB;;AAErD;AACA;AACA;AACA,GAAG,2EAAgC;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,sEAA2B;AAC3C,mBAAmB,0EAA+B,OAAO,yEAA8B;AACvF,gBAAgB,0EAA+B,OAAO,yEAA8B,OAAO,uEAA4B;;AAEvH,gBAAgB,qEAA0B;AAC1C,yBAAyB,gFAAqC;;AAE9D;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,sBAAsB,0EAA+B;AACrD,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA,kCAAkC,yEAA8B;AAChE,mCAAmC,sEAA2B;AAC9D,mCAAmC,mEAAwB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,yEAA8B,oCAAoC,yEAA8B;AACrI;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uDAAY;AAC7B;;AAEA;AACA,CAAC;;AAED,iEAAe,IAAI;;;;;;;;;;;;;;;;;;;;;;;;AClHgD;AACI;AACN;AACR;AACI;AACF;;AAEO;;AAElE;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;AACA;AACA;AACA;AACA,mCAAmC,gFAAS,EAAE,kFAAW,EAAE,+EAAQ,EAAE,2EAAI,EAAE,6EAAM,EAAE,4EAAK,eAAe,uBAAuB;AAC9H;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;AACA;AACA,uBAAuB,4FAAyB;AAChD;AACA;AACA;;AAEA,iEAAe,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzC4C;AACU;AACF;AACW;AACb;AACM;AACN;AACF;AACU;AACpB;AACQ;;AAEH;AACS;;AAEP;;AAEtE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAc;AAC3C,yBAAyB;AACzB,iCAAiC,uEAAc;AAC/C,8BAA8B,uEAAc;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA,gBAAgB,2EAAgB;AAChC;AACA;;AAEA;AACA;AACA,YAAY,SAAS;AACrB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gFAAoB;AACxC;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA,+BAA+B,uEAAoB;AACnD;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA,oCAAoC,4EAAyB;AAC7D;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA,+BAA+B,4EAAuB;AACtD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA,6BAA6B,0EAAuB;AACpD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,gBAAgB,OAAO;AACvB,gBAAgB,QAAQ;AACxB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA,mCAAmC,8EAAgC;AACnE;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA,mCAAmC,6EAA0B;AAC7D;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,QAAQ;AACxB,gBAAgB,wBAAwB;AACxC,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC,0EAAuB;;AAE5D;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oCAAoC,yEAAsB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;;AAEA,yCAAyC,8EAA2B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;;AAEA,mCAAmC,wEAAa;AAChD;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;;AAEA,uCAAuC,6EAAiB;AACxD;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA,iEAAe,cAAc;;;;;;;;;;;;;;;;ACxe7B;AACA;AACA;AACA,sBAAsB,SAAS,GAAG,YAAY;AAC9C;AACA;;AAEA;AACA,wBAAwB,aAAa,IAAI,aAAa,GAAG,gBAAgB;AACzE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gBAAgB,GAAG,mBAAmB;AAC5D;;AAEA,sBAAsB,aAAa,IAAI,aAAa,GAAG,gBAAgB;AACvE;AACA;AACA;;AAEA,iEAAe,YAAY;;;;;;;;;;;;;;;;AC/B3B;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,sBAAsB,SAAS,GAAG,YAAY;AAC9C;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACrBA;AACA;AACA,wDAAwD,UAAU,OAAO,SAAS,GAAG,YAAY,KAAK,WAAW;AACjH;AACA,sBAAsB,SAAS,GAAG,YAAY;AAC9C;AACA;AACA;AACA;AACA;;AAEA,iEAAe,oBAAoB;;;;;;;;;;;;;;;;ACXpB;AACf;AACA;AACA,sBAAsB,SAAS,GAAG,YAAY;AAC9C;AACA;AACA;;AAEA;AACA,sBAAsB,gBAAgB,GAAG,mBAAmB;AAC5D;;AAEA,sBAAsB,eAAe,IAAI,aAAa,IAAI,aAAa,GAAG,gBAAgB;AAC1F;AACA;AACA;;;;;;;;;;;;;;;;ACfA;AACA;AACA,wCAAwC,SAAS,GAAG,YAAY,KAAK,WAAW;AAChF;AACA,sBAAsB,SAAS,GAAG,YAAY;AAC9C;AACA;AACA;AACA;;AAEA,iEAAe,gBAAgB;;;;;;;;;;;;;;;;;;;;;ACV4B;AACG;AACF;;AAER;;;;;;;;;;;;;;;;;;ACJZ;AACA;;AAExC,iEAAe;AACf;AACA;AACA;AACA,WAAW,iDAAI;AACf,WAAW,iDAAI;AACf;AACA,CAAC;;;;;;;;;;;;;;;;;;ACVuG;;AAExG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,EAAE;AACf,aAAa,EAAE;AACf,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,MAAM;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB,wEAAsB;AAC9C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,YAAY;AACZ,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yBAAyB,kEAAgB;;AAEzC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wDAAwD,YAAY;AACpE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,2EAAyB;AACpD;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,2EAAyB;AAC5C;AACA,WAAW;AACX;AACA;AACA,2BAA2B,wDAAM;;AAEjC;AACA,uBAAuB,2EAAyB;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,4DAAU;AACrC,SAAS;AACT,8FAA8F,mBAAmB;AACjH;AACA;AACA;AACA,oCAAoC,yDAAO,CAAC,wEAAsB;AAClE;AACA;AACA;AACA;AACA;AACA,iEAAiE,+DAAa;AAC9E,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iEAAiE,+DAAa;AAC9E,WAAW;AACX;AACA;AACA;;AAEA;AACA,uBAAuB,uEAAqB;AAC5C,qBAAqB,qEAAmB;AACxC,qBAAqB,oEAAkB;AACvC,qBAAqB,qEAAmB;AACxC,qBAAqB,sEAAoB;AACzC,qBAAqB,0EAAwB;AAC7C,qBAAqB,wEAAsB;AAC3C,qBAAqB,yEAAuB;AAC5C,qBAAqB,uEAAqB;AAC1C,qBAAqB,qEAAmB;AACxC,qBAAqB,qEAAmB;AACxC,qBAAqB,qEAAmB;AACxC,qBAAqB,uEAAqB;AAC1C;AACA;AACA;AACA;AACA,8BAA8B,oEAAkB;AAChD;AACA;AACA;AACA,8BAA8B,0EAAwB;AACtD,6BAA6B,oEAAkB,oBAAoB,oEAAkB,qBAAqB,oEAAkB;AAC5H;AACA;AACA;AACA,8BAA8B,2EAAyB;AACvD,6BAA6B,oEAAkB,oBAAoB,oEAAkB,qBAAqB,oEAAkB;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yDAAO;AACxB,KAAK;AACL;AACA;AACA;AACA;;AAEA,iEAAe,0BAA0B;;;;;;;;;;;;;;;;;;ACpTzC;AACA;AACA;AACqG;;AAErG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wBAAwB;AACvC,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,YAAY,uDAAK;;AAEzD;AACA;AACA,iDAAiD,6EAA2B;AAC5E,iBAAiB,4DAAU;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,oEAAkB;AACrD;;AAEA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,4CAA4C,cAAc,gBAAgB,YAAY,QAAQ,mBAAmB,cAAc,mBAAmB;AAClJ;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,SAAS;AACxB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,4CAA4C,mBAAmB,gBAAgB,YAAY,QAAQ,mBAAmB,cAAc,mBAAmB;AACvJ;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC,iEAAe;;AAEpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,kCAAkC,SAAS,qEAAqE,EAAE;AAClH,6BAA6B,+DAAa;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,oEAAkB;AAC9B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,SAAS,qEAAqE,EAAE;AAClH,6BAA6B,+DAAa;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,WAAW;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,iEAAe,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzR9B,kE;;;;;;;;;;;ACAA,2D;;;;;;;;;;;ACAA,gE;;;;;;;;;;;ACAA,uD;;;;;;UCAA;UACA;;UAEA;UACA,SAAS,iCAAmB;UAC5B;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA,uDAAuD,iCAAmB;;UAE1E;UACA;;UAEA;UACA;UACA;;;;;WCxBA;WACA,iCAAmB;WACnB;WACA;WACA;WACA,CAAC,iCAAmB,YAAY,YAAY;WAC5C;WACA,E;;;;;WCPA;WACA,iCAAmB;WACnB;WACA,KAAK,iCAAmB,wBAAwB,iCAAmB;WACnE,wCAAwC,yCAAyC;WACjF;WACA;WACA,E;;;;;WCPA,iCAAmB,qE;;;;;WCAnB;WACA,iCAAmB;WACnB;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;;WCNA,iCAAmB;WACnB;WACA;WACA;WACA,E;;;;UCJA;UACA;UACA;UACA,OAAO,iCAAmB;;;;;;;;;;;;;;ApEH1B;AACA,IAAI,IAAyD;AAC7D;AACA,MAAM,aAKJ;AACF,CAAC;AACD,O;;;;;;;;;ACVA,iBAAiB,6FAAsB,C;;;;;;;;;;;ACA1B;;AAEb,YAAY,+BAAO,CAAC,4DAAY;AAChC,aAAa,+BAAO,CAAC,wEAAkB;AACvC,cAAc,+BAAO,CAAC,gFAAsB;AAC5C,eAAe,+BAAO,CAAC,kFAAuB;AAC9C,oBAAoB,+BAAO,CAAC,oFAAuB;AACnD,mBAAmB,+BAAO,CAAC,0FAA2B;AACtD,sBAAsB,+BAAO,CAAC,gGAA8B;AAC5D,kBAAkB,+BAAO,CAAC,gFAAqB;;AAE/C;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;AAC5C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;AClLa;;AAEb,YAAY,+BAAO,CAAC,yDAAS;AAC7B,WAAW,+BAAO,CAAC,uEAAgB;AACnC,YAAY,+BAAO,CAAC,mEAAc;AAClC,kBAAkB,+BAAO,CAAC,+EAAoB;AAC9C,eAAe,+BAAO,CAAC,+DAAY;;AAEnC;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,eAAe,+BAAO,CAAC,yEAAiB;AACxC,oBAAoB,+BAAO,CAAC,mFAAsB;AAClD,iBAAiB,+BAAO,CAAC,6EAAmB;;AAE5C;AACA;AACA;AACA;AACA,eAAe,+BAAO,CAAC,2EAAkB;;AAEzC;AACA,qBAAqB,+BAAO,CAAC,uFAAwB;;AAErD;;AAEA;AACA,sBAAsB;;;;;;;;;;;;ACvDT;;AAEb;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;AClBa;;AAEb,aAAa,gCAAO,CAAC,kEAAU;;AAE/B;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxDa;;AAEb;AACA;AACA;;;;;;;;;;;;ACJa;;AAEb,YAAY,gCAAO,CAAC,4DAAY;AAChC,eAAe,gCAAO,CAAC,gFAAqB;AAC5C,yBAAyB,gCAAO,CAAC,wFAAsB;AACvD,sBAAsB,gCAAO,CAAC,kFAAmB;AACjD,kBAAkB,gCAAO,CAAC,0EAAe;;AAEzC;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA,yBAAyB;AACzB,KAAK;AACL;AACA,CAAC;;AAED;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED;;;;;;;;;;;;AC9Fa;;AAEb,YAAY,gCAAO,CAAC,4DAAY;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;;ACnDa;;AAEb,oBAAoB,gCAAO,CAAC,0FAA0B;AACtD,kBAAkB,gCAAO,CAAC,sFAAwB;;AAElD;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBa;;AAEb,mBAAmB,gCAAO,CAAC,4EAAgB;;AAE3C;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjBa;;AAEb,YAAY,gCAAO,CAAC,4DAAY;AAChC,oBAAoB,gCAAO,CAAC,8EAAiB;AAC7C,eAAe,gCAAO,CAAC,8EAAoB;AAC3C,eAAe,gCAAO,CAAC,gEAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;;;;;;;;;;;AC9Ea;;AAEb;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzCa;;AAEb,YAAY,gCAAO,CAAC,0DAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,2BAA2B;AAC3B,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;;;;;;;;;;;ACtFa;;AAEb,kBAAkB,gCAAO,CAAC,0EAAe;;AAEzC;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACxBa;;AAEb,YAAY,gCAAO,CAAC,4DAAY;;AAEhC;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;;ACnBa;;AAEb,YAAY,gCAAO,CAAC,yDAAS;AAC7B,0BAA0B,gCAAO,CAAC,qGAA+B;;AAEjE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,gCAAO,CAAC,uEAAgB;AACtC,GAAG;AACH;AACA,cAAc,gCAAO,CAAC,wEAAiB;AACvC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,OAAO,YAAY;AACnB;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;ACjGa;;AAEb;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACVa;;AAEb,YAAY,gCAAO,CAAC,4DAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;ACrEa;;AAEb;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACba;;AAEb,YAAY,gCAAO,CAAC,4DAAY;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0CAA0C;AAC1C,SAAS;;AAET;AACA,4DAA4D,wBAAwB;AACpF;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,kCAAkC;AAClC,+BAA+B,aAAa,EAAE;AAC9C;AACA;AACA,KAAK;AACL;;;;;;;;;;;;ACpDa;;AAEb;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACba;;AAEb;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;;;;;;;;;;;ACVa;;AAEb,YAAY,gCAAO,CAAC,4DAAY;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;ACnEa;;AAEb,YAAY,gCAAO,CAAC,0DAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACXa;;AAEb,YAAY,gCAAO,CAAC,4DAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,eAAe;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;;ACpDa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1Ba;;AAEb,WAAW,gCAAO,CAAC,uEAAgB;;AAEnC;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS,GAAG,SAAS;AAC5C,2BAA2B;AAC3B;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,4BAA4B;AAC5B,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;A0C9VA,SAAS,gCAAO,CAAC,8CAAM;AACvB,SAAS,gCAAO,CAAC,8CAAM;;AAEvB;AACA;AACA;;AAEA;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;ACjCA,UAAU,gCAAO,CAAC,gEAAW;AAC7B,kBAAkB,gCAAO,CAAC,wEAAmB;;AAE7C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AC5GA,UAAU,gCAAO,CAAC,gEAAW;AAC7B,kBAAkB,gCAAO,CAAC,wEAAmB;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;AC5B+C;AACJ;AACT;;AAElC;AACA;;AAEA;AACA;AACA;AACe,kCAAkC,uDAAa;AAC9D,4BAA4B,QAAQ,sDAAqB;AACzD,8BAA8B,QAAQ,4DAA2B;AACjE,+BAA+B,SAAS,4DAA2B,EAAE,2DAA0B;AAC/F,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B,QAAQ,uDAAsB;AACzD,0BAA0B,QAAQ,yDAAwB;;AAE1D;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,KAAK;AACR;AACA,qCAAqC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AAClE;AACA,sCAAsC,KAAK,GAAG,KAAK,GAAG,KAAK,UAAU,KAAK;AAC1E;AACA,uCAAuC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AAC5E;AACA,uCAAuC,KAAK;AAC5C;AACA,qCAAqC,KAAK;AAC1C;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,EAAE,oDAAmB,QAAQ,yDAAwB,QAAQ,2DAA0B;AAC7G;AACA,eAAe,4DAAmB,UAAU,4DAAmB;AAC/D,mBAAmB,yDAAwB;AAC3C,OAAO,eAAe,4DAAmB,UAAU,4DAAmB;AACtE,mBAAmB,oDAAmB;AACtC,OAAO,eAAe,4DAAmB,UAAU,4DAAmB;AACtE,mBAAmB,2DAA0B;AAC7C,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,2DAAkB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC9H+C;AACb;AACS;AACH;;AAExC;AACA;;AAEA;AACA;AACA;AACe,mCAAmC,uDAAa;AAC/D,4BAA4B,QAAQ,uDAAsB;AAC1D,8BAA8B,QAAQ,4DAA2B;AACjE;AACA;AACA,MAAM,2DAA0B;AAChC,MAAM,4DAA2B;AACjC,MAAM,gEAA+B;AACrC,MAAM,gEAA+B;AACrC;AACA;;AAEA,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B,QAAQ,uDAAsB;AACzD,0BAA0B,QAAQ,yDAAwB;;AAE1D;AACA;AACA;AACA,QAAQ,+DAAsB;AAC9B;AACA;;AAEA;AACA,QAAQ,gEAAuB;AAC/B;AACA;AACA;AACA,QAAQ,oEAA2B;AACnC;AACA;AACA;AACA,QAAQ,8DAAqB;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kDAAkD;AAClD;;AAEA;AACA;AACA;AACA;;AAEA,mBAAmB,oBAAoB;AACvC;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,oCAAoC,OAAO;AAChH;AACA;AACA,kBAAkB,mEAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3HA;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEP;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACO;AACA;AACA;AACA;AACA;AACA;AACP;AACO;AACA;AACA;AACP;AACO;AACA;AACA;AACP;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACO;AACA;;;;;;;;;;;;;;;;;;AC3O8B;AACQ;;AAE9B;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,cAAc;AAC7B;AACA;AACA,uBAAuB,qFAAyB;;AAEhD;;AAEA;AACA,mCAAmC,2DAAqB;AACxD;AACA;AACA,kCAAkC,2DAAqB;AACvD;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC,eAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC,eAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,qFAAyB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACjHmC;AACkB;;AAErD;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,wCAAM;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uBAAuB,qEAA2B;AAClD,aAAa,mEAAyB;AACtC,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7Cb;AACZ,CAA2C;AACH;AACI;AACV;AACO;AACE;AACA;AACQ;AACW;AACjB;AACX;AACF;AACF;AACU;AACkB;AACA;AACE;AACE;AACN;AACM;AACF;AACP;AACR;AACS;;AAEZ;AACkB;AACA;AACtB;AACK;;AAEN;AACA;;AAEiB;AACd;;AAEE;;AAEgB;AACa;AACR;AACW;AACb;;AAEjB;AACJ;;AA6CvC;;;;;;;;;;;;;;;;;AC5FmC;;AAErB;AACf;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,gBAAgB,0DAA0D,KAAK;AAC/E;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iDAAQ;AACtC;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA,8CAA8C,gBAAgB;AAC9D,cAAc,WAAW,EAAE,WAAW;AACtC;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC5Ge;AACf;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,gBAAgB,kCAAkC,KAAK;AACvD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,cAAc;AAC3B,aAAa,OAAO;AACpB;AACA,eAAe,gBAAgB,KAAK;AACpC;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;;;;;;;AChD8D;AACX;AACX;;AAExC;AACA;AACA;AACe;AACf;AACA;AACA,aAAa,OAAO;AACpB,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,4BAA4B;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,+BAA+B;AAC5C,kBAAkB,0BAA0B;AAC5C,gBAAgB,4BAA4B,GAAG;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gCAAgC,SAAS,gDAAgD,EAAE;AAC3F;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iDAAiD,MAAM;AACvD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,MAAM,gFAAqC;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL,MAAM,mEAAkB,kBAAkB,MAAM;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,MAAM,mEAAkB,uCAAuC,OAAO;AACtE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mEAAkB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B;AACA,8BAA8B,yDAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;AACA,8CAA8C,SAAS,yDAAyD,EAAE;AAClH;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,qFAA0C;AAC9D;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,qFAA0C;AACjE;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;ACzgBA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gCAAgC;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,iEAAe,eAAe;;;;;;;;;;;;;;;;AC/D9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,iEAAe,WAAW;;;;;;;;;;;;;;;;;;;;AC9DQ;AACiB;AACT;AACF;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,sBAAsB;AACnC;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,EAAE,+DAA+D,GAAG,6EAAoB;;AAE7F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B,gDAAO;AACrC;AACA;AACA,OAAO;AACP,0BAA0B,gDAAO;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,IAAI;AACjB,eAAe;AACf;AACA;AACA;AACA,iBAAiB,gDAAO;AACxB,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB,eAAe;AACf;AACA;AACA,eAAe,gDAAO;AACtB;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,yDAAe;AACpE;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA,iDAAiD,gDAAO;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO,+BAA+B;AACtC;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,6EAAoB;AACnC,yEAAyE,8BAA8B,4BAA4B,2BAA2B;AAC9J;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,6EAAoB;AACjC,uEAAuE,4BAA4B,4BAA4B,2BAA2B;AAC1J;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,WAAW;;;;;;;;;;;;;;;;;;;ACvPqB;AACb;AACS;;AAE3C;AACA;;AAEA;AACA;AACA;AACe,gCAAgC,uDAAa;AAC5D,4BAA4B,QAAQ,oDAAmB;;AAEvD,8BAA8B,QAAQ,4DAA2B;;AAEjE,+BAA+B,SAAS,4DAA2B;;AAEnE,gCAAgC;;AAEhC,iCAAiC;;AAEjC,2BAA2B,QAAQ,uDAAsB;;AAEzD,0BAA0B,QAAQ,yDAAwB;AAC1D;AACA;AACA,SAAS,qEAA2B;AACpC;AACA,QAAQ,8DAAqB;AAC7B;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAkB;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;;;;;;;;;;;;;;;;;;;;;;ACpF+C;AACe;AACnB;AACT;AACM;;AAEW;;AAEnD;AACA;AACA;AACA;AACA;AACe,iCAAiC,uDAAa;AAC7D,4BAA4B,QAAQ,qDAAoB;AACxD,8BAA8B,QAAQ,4DAA2B;AACjE,+BAA+B,SAAS,4DAA2B;AACnE,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B,QAAQ,uDAAsB;AACzD,0BAA0B,QAAQ,yDAAwB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qEAA2B;AACpC;AACA,QAAQ,+DAAsB;AAC9B;AACA,UAAU,8DAA6B;AACvC,UAAU,iEAAgC;AAC1C,UAAU,2DAA0B;AACpC,UAAU,0DAAyB;AACnC,UAAU,8DAA6B;AACvC,UAAU,yDAAwB;AAClC,UAAU,2DAA0B;AACpC,UAAU,2DAA0B;AACpC,UAAU,0DAAyB;AACnC,UAAU,yDAAwB;AAClC;AACA;AACA;AACA,QAAQ,6DAAoB;AAC5B;AACA,UAAU,uDAAsB;AAChC,UAAU,qDAAoB;AAC9B,UAAU,mDAAkB;AAC5B;AACA;AACA;AACA,QAAQ,8DAAqB;AAC7B;AACA,UAAU,0DAAyB;AACnC,UAAU,wDAAuB;AACjC,UAAU,sDAAqB;AAC/B,UAAU,0DAAyB;AACnC,UAAU,wDAAuB;AACjC;AACA;AACA;AACA,QAAQ,iEAAwB;AAChC;AACA,UAAU,kDAAiB;AAC3B,UAAU,kDAAiB;AAC3B,UAAU,kDAAiB;AAC3B;AACA;AACA;AACA,QAAQ,4DAAmB;AAC3B;AACA,UAAU,wDAAuB;AACjC,UAAU,0DAAyB;AACnC,UAAU,uDAAsB;AAChC,UAAU,wDAAuB;AACjC,UAAU,2DAA0B;AACpC,UAAU,+DAA8B;AACxC,UAAU,uDAAsB;AAChC;AACA;AACA;AACA,QAAQ,4DAAmB;AAC3B;AACA,UAAU,wDAAuB;AACjC,UAAU,uDAAsB;AAChC,UAAU,6DAA4B;AACtC,UAAU,uDAAsB;AAChC;AACA;AACA;AACA,QAAQ,2DAAkB;AAC1B;AACA,UAAU,0DAAyB;AACnC,UAAU,2DAA0B;AACpC,UAAU,wDAAuB;AACjC,UAAU,0DAAyB;AACnC;AACA;AACA;AACA;AACA,QAAQ,8DAAqB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAkB,EAAE,8DAAqB,EAAE,2DAAkB,EAAE,iEAAwB,EAAE,4DAAmB,EAAE,4DAAmB;AAC7I;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA,8BAA8B,2DAAkB;AAChD,gCAAgC,2DAAkB,YAAY,wDAAuB;AACrF;AACA;AACA,eAAe,sDAAqB;AACpC,OAAO,gCAAgC,2DAAkB,YAAY,2DAA0B;AAC/F;AACA,eAAe,4DAA2B;AAC1C,OAAO;AACP,qCAAqC,2DAAkB;AACvD;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,wBAAwB,2DAAkB,qBAAqB,wDAAuB;AACtF,aAAa,sDAAqB;AAClC,KAAK,0BAA0B,2DAAkB,qBAAqB,2DAA0B;AAChG;AACA,aAAa,4DAA2B;AACxC,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,KAAK;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,UAAU,KAAK;AACvC,WAAW,KAAK,GAAG,KAAK,GAAG,KAAK;;AAEhC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,UAAU,KAAK,SAAS,KAAK;AAC7B,WAAW,KAAK,GAAG,KAAK;AACxB;AACA;AACA;AACA,WAAW,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,IAAI;;AAE/C;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,aAAa,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACtE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,QAAQ;AACvB;;AAEA;AACA;AACA;AACA,aAAa,WAAW;AACxB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uDAAsB,EAAE,uDAAsB,EAAE,uDAAsB;AACjG,kCAAkC,2DAAkB;AACpD,4CAA4C,2DAAkB;AAC9D;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,MAAM,mEAAkB,4FAA4F,2DAAkB;AACtI;;AAEA;AACA,MAAM,gFAAqC;AAC3C,gCAAgC,2DAAkB;AAClD,iBAAiB,2DAAkB,YAAY,uDAAsB;;AAErE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,2DAAkB,oBAAoB,2DAAkB;AAClG;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,+DAAsB;AACrE,kDAAkD,+DAAsB;AACxE;AACA;AACA;AACA;AACA;AACA,iBAAiB,gDAAO,CAAC,+DAAsB;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,KAAK,iCAAiC,KAAK;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,WAAW,yEAAqB;AAChC;AACA;;;;;;;;;;;;;;;;;;;ACpb6C;AACX;AACM;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE,+DAA+D,GAAG,gFAAoB;AAC7F;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,gFAAoB;AACpE;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL,aAAa,gFAAoB;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gFAAoB;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,gDAAO;AAC/C;AACA;AACA;AACA,mBAAmB,gDAAO;AAC1B;AACA,KAAK;AACL,qCAAqC,gDAAO;AAC5C,mBAAmB,gDAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA,iEAAe,UAAU;;;;;;;;;;;;;;;;;ACrKS;;AAEnB;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA,0BAA0B,wBAAwB,KAAK;AACvD;AACA;AACA;AACA;AACA;AACA,iCAAiC,8BAA8B;AAC/D;AACA,eAAe,gDAAO;AACtB;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACtC0C;AACV;AACF;AACU;;AAExC;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8BAA8B,+CAAM;AACpC;AACA;AACA;;AAEA,eAAe,SAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,aAAa;AAC1B,eAAe,QAAQ;AACvB;AACA;AACA,sBAAsB,8CAAK;AAC3B,uBAAuB,+CAAM;AAC7B;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,0DAAiB;AACtC;AACA,KAAK;AACL,yBAAyB,kFAAyB;AAClD,qBAAqB,+CAAM,KAAK,8CAAK;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,qCAAqC;AAC9D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,IAAI,mEAAkB;AACtB,WAAW,kFAAyB;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,uEAA8B;;AAElG,+CAA+C,kBAAkB;AACjE;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,OAAO;;;;;;;;;;;;;;;;;;;;AC1MY;AACW;AACF;AACH;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,gFAAoB;AAC7B,kCAAkC,SAAS;AAC3C;;AAEA;AACA;AACA;AACA,KAAK,EAAE,+DAA+D,GAAG,gFAAoB;AAC7F,iBAAiB,gFAAoB;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAS;AAC1C,+BAA+B,SAAS;AACxC,gCAAgC,SAAS;AACzC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;;AAEA,iCAAiC,uDAAsB;AACvD;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA,iDAAiD;AACjD;AACA,+CAA+C;AAC/C,iDAAiD;;AAEjD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP,qBAAqB,+DAAsB,SAAS,+DAAsB;AAC1E;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA,kBAAkB,gFAAoB;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA,kBAAkB,gFAAoB;AACtC,mEAAmE,YAAY;AAC/E;;AAEA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA,eAAe,OAAO,SAAS,EAAE,QAAQ,SAAS,QAAQ;AAC1D;AACA;AACA;AACA;AACA,0BAA0B,qBAAqB,KAAK;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2DAAkB;AACtD;AACA;AACA;AACA,mDAAmD,kBAAkB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,gDAAO;AACtC;AACA;;AAEA,WAAW,gFAAoB;AAC/B,qCAAqC,8BAA8B;AACnE,wBAAwB,2BAA2B;AACnD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA,6BAA6B,gDAAO;AACpC;AACA;;AAEA,SAAS,gFAAoB;AAC7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA,+CAA+C,oBAAoB,KAAK;AACxE;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,UAAU,YAAY,YAAY,YAAY,YAAY,YAAY,2BAA2B;AACtI;AACA,mBAAmB,QAAQ,IAAI,oBAAoB;AACnD;AACA;AACA;AACA;AACA,qBAAqB,IAAI,KAAK,MAAM;AACpC,OAAO;AACP,qBAAqB,IAAI,IAAI,MAAM;AACnC;AACA;AACA,8BAA8B,aAAa;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qFAAyB;;AAErD;AACA;AACA,8BAA8B,2DAAkB;AAChD,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qFAAyB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,UAAU;;;;;;;;;;;;;;;;AC3ZzB;AACA;AACA;AACA;AACA,aAAa,sBAAsB;AACnC,aAAa,+BAA+B;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA,iEAAe,eAAe;;;;;;;;;;;;;;;;;ACtBI;;AAElC;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,2CAA2C,gDAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA,iEAAe,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;AC/CO;AACmB;AAC5B;AACS;AACqB;AACb;AACX;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B,QAAQ,uDAAsB;AACzD,0BAA0B,QAAQ,yDAAwB;;AAE1D;AACA;AACA;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,KAAK;AACL,uCAAuC,YAAY,2BAA2B,KAAK;AACnF;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB;AACA;AACA;AACA,IAAI,mEAAkB;AACtB;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,yDAAwB;AACnC;;AAEA;AACA,WAAW,kEAAiC;AAC5C;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAkB;AAC1B;AACA,UAAU,sDAAqB;AAC/B,UAAU,yDAAwB;AAClC,UAAU,yDAAwB;AAClC,UAAU,uDAAsB;AAChC,UAAU,2DAA0B;AACpC,UAAU,2DAA0B;AACpC,UAAU,4DAA2B;AACrC,UAAU,oDAAmB;AAC7B,UAAU,uDAAsB;AAChC,UAAU,wDAAuB;AACjC,UAAU,sDAAqB;AAC/B,UAAU,2DAA0B;AACpC,UAAU,uDAAsB;AAChC,UAAU,sDAAqB;AAC/B,UAAU,sDAAqB;AAC/B,UAAU,oDAAmB;AAC7B,UAAU,+DAA8B;AACxC;AACA;AACA;AACA,QAAQ,6DAAoB;AAC5B;AACA,UAAU,yDAAwB;AAClC,UAAU,wDAAuB;AACjC,UAAU,sDAAqB;AAC/B;AACA;AACA;AACA,QAAQ,2DAAkB;AAC1B;AACA,UAAU,uDAAsB;AAChC,UAAU,yDAAwB;AAClC;AACA;AACA;AACA,QAAQ,6DAAoB;AAC5B;AACA,UAAU,kDAAiB;AAC3B,UAAU,kDAAiB;AAC3B,UAAU,kDAAiB;AAC3B;AACA;AACA;AACA,QAAQ,6DAAoB;AAC5B;AACA,UAAU,uDAAsB;AAChC,UAAU,qDAAoB;AAC9B;AACA;AACA;AACA,QAAQ,0DAAiB;AACzB;AACA;AACA;AACA,QAAQ,2DAAkB;AAC1B;AACA;AACA;AACA,QAAQ,6DAAoB;AAC5B;AACA;AACA;AACA,QAAQ,gEAAuB;AAC/B;AACA;AACA;AACA,QAAQ,0DAAiB;AACzB;AACA;AACA;AACA,QAAQ,oEAA2B;AACnC;AACA;AACA;AACA,QAAQ,2DAAkB;AAC1B;AACA;AACA;AACA,QAAQ,iEAAwB;AAChC;AACA;AACA;AACA,QAAQ,4DAAmB;AAC3B;AACA;AACA;AACA,QAAQ,+DAAsB;AAC9B;AACA;AACA;AACA,QAAQ,gEAAuB;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;AACA,iBAAiB,qDAAW;AAC5B,KAAK;AACL,kCAAkC,KAAK;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,iBAAiB,gDAAO;AACxB,KAAK;AACL,kCAAkC,YAAY;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA,iCAAiC,2DAAkB,0BAA0B,2DAAkB;AAC/F;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA,GAAG,KAAK;AACR;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA,4DAA4D,mBAAmB,KAAK;AACpF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,oBAAoB,UAAU;AAC9B;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,gFAAqC;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,KAAK;AACL,sCAAsC,aAAa;AACnD;AACA;;AAEA;AACA;AACA;AACA,aAAa,cAAc;AAC3B,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,cAAc;AAC3B,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B,gEAAqB;AACnD,SAAS,2DAAkB,EAAE,iEAAwB,EAAE,8DAAqB,EAAE,iEAAwB;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,wCAAwC,yDAAe;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8DAAqB;AACtC;AACA,oBAAoB,6DAAoB;AACxC;AACA,SAAS,eAAe,4DAAmB;AAC3C;AACA,oBAAoB,4DAAmB;AACvC,SAAS,eAAe,2DAAkB,MAAM,oDAAmB;AACnE;AACA,oBAAoB,2DAAkB;AACtC,SAAS,eAAe,2DAAkB,MAAM,sDAAqB;AACrE,oBAAoB,2DAAkB;AACtC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gCAAgC,gEAAqB,mBAAmB,2CAA2C;AACnH;AACA;AACA;AACA,SAAS;AACT,0CAA0C,yDAAe;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,8DAAqB,kBAAkB,8DAAqB;AAC3F,kCAAkC,gEAAqB,QAAQ,4DAAmB,EAAE,4DAAmB;AACvG;AACA;AACA;AACA,WAAW;AACX,8CAA8C,yDAAe;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gEAAqB;AACzD,eAAe,8DAAqB,EAAE,iEAAwB,EAAE,6DAAoB,EAAE,6DAAoB,EAAE,6DAAoB;AAChI,gBAAgB,4DAAmB,EAAE,2DAAkB,EAAE,4DAAmB;AAC5E;AACA;AACA;AACA,aAAa;AACb,gDAAgD,yDAAe;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;AACA;;AAEA,iEAAe,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;ACjtBmB;AACW;AACA;AACE;AACE;AACN;AACM;AACF;AACjB;;AAE3C;AACA,GAAG,2DAA0B,EAAE,6DAAkB;AACjD,GAAG,4DAA2B,EAAE,6DAAkB;AAClD,GAAG,4DAA2B,EAAE,6DAAkB;AAClD,GAAG,4DAA2B,EAAE,8DAAmB;AACnD,GAAG,2DAA0B,EAAE,8DAAmB;AAClD,GAAG,4DAA2B,EAAE,+DAAoB;AACpD,GAAG,4DAA2B,EAAE,4DAAiB;AACjD,GAAG,4DAA2B,EAAE,+DAAoB;AACpD,GAAG,4DAA2B,EAAE,8DAAmB;AACnD,GAAG,4DAA2B,EAAE,8DAAmB;AACnD,GAAG,iEAAgC,EAAE,8DAAmB;AACxD;;AAEA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,aAAa,uDAAa;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uDAAa;AAC5B;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,mBAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,yDAAwB;AACnC;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,mBAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,kEAAiC;AAC5C;;AAEA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,eAAe,OAAO;AACtB,SAAS,OAAO;AAChB,SAAS,OAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,aAAa,gBAAgB;AAC7B,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA,YAAY,oDAAmB,EAAE,sDAAqB,EAAE,uDAAsB;AAC9E;AACA;AACA,iEAAe,oBAAoB;;;;;;;;;;;;;;;;AC3JpB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACzT+C;AACb;AACS;AACH;;AAExC;AACA;;AAEA;AACA;AACA;AACe,iCAAiC,uDAAa;AAC7D,4BAA4B,QAAQ,qDAAoB;AACxD,8BAA8B,QAAQ,4DAA2B;AACjE,+BAA+B,SAAS,2DAA0B,EAAE,4DAA2B;AAC/F,gCAAgC;AAChC,iCAAiC;AACjC,2BAA2B,QAAQ,uDAAsB;AACzD,0BAA0B,QAAQ,yDAAwB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qEAA2B;AACpC;AACA,QAAQ,+DAAsB;AAC9B;AACA,UAAU,yDAAwB;AAClC,UAAU,0DAAyB;AACnC,UAAU,2DAA0B;AACpC,UAAU,8DAA6B;AACvC,UAAU,yDAAwB;AAClC,UAAU,8DAA6B;AACvC;AACA;AACA;AACA,QAAQ,6DAAoB;AAC5B;AACA,UAAU,uDAAsB;AAChC,UAAU,qDAAoB;AAC9B;AACA;AACA;AACA,QAAQ,8DAAqB;AAC7B;AACA,UAAU,0DAAyB;AACnC,UAAU,wDAAuB;AACjC,UAAU,sDAAqB;AAC/B,UAAU,0DAAyB;AACnC,UAAU,wDAAuB;AACjC,UAAU,wDAAuB;AACjC,UAAU,wDAAuB;AACjC;AACA;AACA;AACA,QAAQ,iEAAwB;AAChC;AACA,UAAU,kDAAiB;AAC3B,UAAU,kDAAiB;AAC3B,UAAU,kDAAiB;AAC3B,UAAU,kDAAiB;AAC3B,UAAU,kDAAiB;AAC3B;AACA;AACA;AACA,QAAQ,4DAAmB;AAC3B;AACA,UAAU,wDAAuB;AACjC,UAAU,0DAAyB;AACnC,UAAU,uDAAsB;AAChC,UAAU,wDAAuB;AACjC,UAAU,2DAA0B;AACpC,UAAU,+DAA8B;AACxC;AACA;AACA;AACA,QAAQ,4DAAmB;AAC3B;AACA,UAAU,uDAAsB;AAChC,UAAU,wDAAuB;AACjC;AACA;AACA;AACA,QAAQ,2DAAkB;AAC1B;AACA,UAAU,0DAAyB;AACnC,UAAU,2DAA0B;AACpC,UAAU,0DAAyB;AACnC,UAAU,0DAAyB;AACnC,UAAU,sDAAqB;AAC/B,UAAU,yDAAwB;AAClC,UAAU,0DAAyB;AACnC,UAAU,0DAAyB;AACnC;AACA;AACA;AACA,QAAQ,kEAAyB;AACjC;AACA,UAAU,kDAAiB;AAC3B,UAAU,kDAAiB;AAC3B,UAAU,kDAAiB;AAC3B,UAAU,kDAAiB;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAkB,EAAE,8DAAqB,EAAE,2DAAkB,EAAE,iEAAwB,EAAE,4DAAmB,EAAE,kEAAyB;AACnJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,wBAAwB,2DAAkB,qBAAqB,yDAAwB;AACvF,aAAa,0DAAyB;AACtC,KAAK,0BAA0B,2DAAkB,qBAAqB,2DAA0B;AAChG,aAAa,4DAA2B;AACxC,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA,8BAA8B,2DAAkB;AAChD;AACA;AACA,gCAAgC,2DAAkB,YAAY,2DAA0B;AACxF,eAAe,4DAA2B;AAC1C,OAAO;AACP,qCAAqC,2DAAkB;AACvD;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;AACA,aAAa,WAAW;AACxB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,2DAAkB;AACpD,WAAW,oDAAmB,EAAE,+DAA8B,EAAE,sDAAqB,EAAE,yDAAwB,sBAAsB,2DAAkB;AACvJ;AACA;AACA,OAAO,qBAAqB,2DAAkB,YAAY,uDAAsB;AAChF;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,MAAM,mEAAkB,4FAA4F,2DAAkB;AACtI;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACpP6C;AACX;AACQ;AACP;AACK;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,gBAAgB;AAC7B,aAAa,SAAS;AACtB,aAAa,OAAO;;AAEpB,aAAa,YAAY;AACzB;AACA,mEAAmE;AACnE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,EAAE,+DAA+D,GAAG,gFAAoB;;AAE7F;AACA;AACA;;AAEA,cAAc,wCAAM;AACpB;;AAEA;AACA,IAAI,mEAAkB;AACtB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B,2DAAkB;AAC9C,OAAO;AACP;;AAEA;AACA,6BAA6B,+DAAsB;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA,IAAI,mEAAkB;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,gDAAO;AACtC;AACA;;AAEA,WAAW,gFAAoB;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA,6BAA6B,gDAAO;AACpC;AACA;;AAEA,SAAS,gFAAoB;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA,eAAe,QAAQ;AACvB;AACA,yBAAyB,wCAAwC,KAAK;AACtE;AACA;AACA;AACA,sBAAsB,2DAAkB;AACxC,sBAAsB,2DAAkB;AACxC,qBAAqB,2DAAkB,yBAAyB,2DAAkB;AAClF;AACA;;AAEA,eAAe,gFAAoB;AACnC;AACA;AACA;AACA,WAAW,+BAA+B;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA,sBAAsB,gFAAoB;;AAE1C;AACA,mFAAmF,+BAA+B;AAClH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,KAAK;;;;;;;;;;;;;;;;;;;;;;;ACxRU;AACU;AACN;AACa;AACF;AACT;AACiB;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,aAAa;AAC1B,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,8CAAK;AAChC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,mDAAU;AAC5C;AACA;AACA;;AAEA,iDAAiD,uDAAa;AAC9D;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,uDAAa;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA,iBAAiB,gFAAoB;AACrC;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC;AACA;AACA;AACA,sCAAsC;AACtC;AACA;;AAEA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA,+BAA+B,oBAAoB,KAAK;AACxD,eAAe,gFAAoB;AACnC;AACA;AACA,wEAAwE,2DAAkB;AAC1F,0DAA0D,wBAAwB;AAClF,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO,0CAA0C;AAC9D;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,wEAAmB;AACpF,8CAA8C,kBAAkB;AAChE;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,eAAe,gFAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,2DAAkB;AACvG,iFAAiF,aAAa;AAC9F;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,gFAAoB;AACnC;AACA;;AAEA;AACA,kBAAkB,yDAAgB;AAClC;AACA;AACA,uBAAuB,8DAAqB;AAC5C;;AAEA;AACA;AACA,uBAAuB,kEAAwB;AAC/C;;AAEA;AACA,uBAAuB,qEAA2B;AAClD,aAAa,mEAAyB;AACtC,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,4CAA4C,wDAAwD;;AAEpG;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,iEAAe,MAAM;;;;;;;;;;;;;;;;AC5UrB;;AAEA;;AAEA;AACA;AACA;AACe;AACf;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA,gBAAgB,iDAAiD,KAAK;AACtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO,8CAA8C,wBAAwB;AAC1F,eAAe,OAAO;AACtB;AACA,kCAAkC;AAClC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC9IyC;;AAEzC;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,eAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB,2BAA2B;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,OAAO;AACP,uCAAuC;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,QAAQ,mEAAkB,uDAAuD,UAAU,IAAI,aAAa;AAC5G;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,QAAQ,mEAAkB,qDAAqD,UAAU,IAAI,aAAa;AAC1G;AACA;AACA;;AAEA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACzHyC;AACA;AACzC;AACA;AACA;AACe;AACf;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA,SAAS,OAAO;AAChB,SAAS,OAAO;AAChB,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,iCAAiC,oDAAU;AAC3C;AACA,OAAO;AACP;AACA,4BAA4B,oDAAU;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8FAA8F;AAC9F;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,kBAAkB,mEAAkB,sDAAsD,eAAe,QAAQ,uBAAuB;AACxI;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA,cAAc,mEAAkB,sDAAsD,eAAe,QAAQ,uBAAuB;AACpI;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,8FAA8F,MAAM;AACpG;AACA,MAAM,mEAAkB;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA,iBAAiB,OAAO,IAAI,QAAQ,IAAI,KAAK;AAC7C;AACA,eAAe,IAAI,IAAI,MAAM;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,MAAM,mEAAkB,uDAAuD,IAAI;AACnF;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA,eAAe;AACf;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,eAAe;AAC5B;AACA;AACA,mCAAmC;;AAEnC,yBAAyB,gBAAgB,GAAG,cAAc;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;;;;;;;;;;;;;;;;;AC5L+C;AACJ;;AAE3C;AACA;;AAEA;AACA;AACA;AACe,mCAAmC,uDAAa;AAC/D,4BAA4B,QAAQ,uDAAsB;;AAE1D,8BAA8B,QAAQ,4DAA2B;;AAEjE,+BAA+B,SAAS,4DAA2B,EAAE,4DAA2B,EAAE,2DAA0B,EAAE,8DAA6B;;AAE3J,gCAAgC;;AAEhC,iCAAiC;;AAEjC,2BAA2B,QAAQ,uDAAsB;;AAEzD,0BAA0B,QAAQ,yDAAwB;;AAE1D;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,oBAAoB,UAAU;AAC9B;AACA;;;;;;;;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,4BAA4B,eAAe,GAAG,YAAY,OAAO,UAAU,QAAQ,eAAe,OAAO,UAAU;AACnH;AACA;;;;;;;;;;;;;;;;;;;ACnCmC;AAC2B;;AAE9D;AACA;AACA;AACe;AACf;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA,cAAc,0BAA0B;AACxC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,YAAY;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA,aAAa,gBAAgB;AAC7B,eAAe,SAAS;AACxB;AACA;AACA,kBAAkB,wCAAM;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO,SAAS;AAC7B,aAAa,OAAO;AACpB;AACA,gBAAgB;AAChB,+CAA+C,oEAAW;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACtFA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA,iEAAe,gBAAgB;;;;;;;;;;;;;;;;;ACnEU;;AAE1B;AACf;AACA;AACA;AACA,KAAK;AACL,MAAM,mEAAkB;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACXA;AACiD;;AAEjD;AACA;AACA;AACe,mCAAmC,wDAAc;AAChE;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,4CAA4C;AACzD;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACtCiD;;AAEjD;AACA;AACA;AACe,+BAA+B,wDAAc;AAC5D;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,kDAAkD,YAAY;AAC9D;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY;AACnD,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,YAAY;AAChE;AACA;;AAEA;AACA,+BAA+B;;AAE/B,2CAA2C,YAAY;AACvD;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,4CAA4C;AACzD;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA,gDAAgD,YAAY;AAC5D;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,kDAAkD,YAAY;AAC9D;AACA;AACA;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;;;;;;;ACjJiD;AACxB;;AAEzB;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,yBAAyB,aAAa,mCAAmC;AACzE;AACA;AACA;AACA;AACA;AACe,oCAAoC,wDAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,qBAAqB,aAAa,GAAG,IAAI;AACzC,2BAA2B,iDAAU;AACrC;AACA,uEAAuE,cAAc;AACrF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA,mBAAmB,aAAa,UAAU,YAAY;AACtD,yBAAyB,gDAAS;AAClC;AACA;AACA,KAAK;AACL,qEAAqE,cAAc;AACnF;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA,mBAAmB,aAAa,UAAU,YAAY;AACtD,yBAAyB,mDAAY;AACrC;AACA,qEAAqE,cAAc;AACnF;AACA;AACA;;;;;;;;;;;;;;;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,4CAA4C;AACzD;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC9DiD;;AAEjD;AACA;AACA;AACe,8BAA8B,wDAAc;AAC3D;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA,qCAAqC,mEAAmE;AACxG;;AAEA;AACA;AACA;AACA;AACA,aAAa,4CAA4C;AACzD;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA,qCAAqC,6DAA6D;AAClG;AACA;;;;;;;;;;;;;;;;;;;;;ACjC+C;AACb;AACS;AACkB;AACb;;AAEhD;AACA;;AAEA;AACA;AACA;AACe,kCAAkC,uDAAa;AAC9D,4BAA4B,QAAQ,sDAAqB;;AAEzD,8BAA8B,QAAQ,4DAA2B;;AAEjE,+BAA+B,SAAS,4DAA2B,EAAE,4DAA2B,EAAE,iEAAgC;;AAElI,gCAAgC;;AAEhC,iCAAiC;;AAEjC,2BAA2B,QAAQ,uDAAsB;;AAEzD,0BAA0B,QAAQ,yDAAwB;AAC1D;AACA;AACA,SAAS,qEAA2B;AACpC;AACA,QAAQ,2DAAkB;AAC1B;AACA,UAAU,sDAAqB;AAC/B,UAAU,yDAAwB;AAClC,UAAU,yDAAwB;AAClC,UAAU,uDAAsB;AAChC,UAAU,2DAA0B;AACpC,UAAU,2DAA0B;AACpC,UAAU,4DAA2B;AACrC,UAAU,oDAAmB;AAC7B,UAAU,uDAAsB;AAChC,UAAU,wDAAuB;AACjC,UAAU,sDAAqB;AAC/B,UAAU,2DAA0B;AACpC,UAAU,uDAAsB;AAChC,UAAU,sDAAqB;AAC/B,UAAU,sDAAqB;AAC/B,UAAU,oDAAmB;AAC7B,UAAU,+DAA8B;AACxC,UAAU,4DAA2B;AACrC;AACA;AACA;AACA,QAAQ,4DAAmB;AAC3B;AACA;AACA;AACA,QAAQ,4DAAmB;AAC3B;AACA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,yGAAyG,UAAU;AACnH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B,6DAAqB;AACnD,SAAS,2DAAkB,EAAE,iEAAwB,EAAE,4DAAmB,EAAE,4DAAmB,EAAE,iEAAwB;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,wCAAwC,sDAAe;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8DAAqB;AACtC;AACA,oBAAoB,6DAAoB;AACxC;AACA,SAAS,eAAe,4DAAmB;AAC3C;AACA,oBAAoB,4DAAmB;AACvC,SAAS,eAAe,2DAAkB,MAAM,oDAAmB;AACnE;AACA,oBAAoB,2DAAkB;AACtC,SAAS,eAAe,2DAAkB,MAAM,sDAAqB;AACrE,oBAAoB,2DAAkB;AACtC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gCAAgC,6DAAqB,mBAAmB,2CAA2C;AACnH;AACA;AACA;AACA,SAAS;AACT,0CAA0C,sDAAe;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,8DAAqB,kBAAkB,8DAAqB;AAC3F,kCAAkC,6DAAqB,QAAQ,4DAAmB,EAAE,4DAAmB;AACvG;AACA;AACA;AACA,WAAW;AACX,8CAA8C,sDAAe;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,6DAAqB;AACzD,eAAe,8DAAqB,EAAE,iEAAwB,EAAE,6DAAoB,EAAE,6DAAoB,EAAE,6DAAoB;AAChI,gBAAgB,4DAAmB,EAAE,2DAAkB,EAAE,4DAAmB;AAC5E;AACA;AACA;AACA,aAAa;AACb,gDAAgD,sDAAe;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC/NA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO,oCAAoC;AACxD,aAAa,OAAO,2CAA2C;AAC/D,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,iEAAe,MAAM;;;;;;;;;;;;;;;;AC3DrB;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO,oCAAoC;AACxD,aAAa,OAAO,2CAA2C;AAC/D,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ;;;;;;;;;;;;;;;;;;ACtEsC;AACE;;AAEhD,+BAA+B,gEAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,cAAc,YAAY,+DAA+D,oBAAoB,SAAS,YAAY;AAClI;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,kBAAkB,wFAA6C;AAC/D;AACA;AACA;;AAEA;AACA,kBAAkB,wFAA6C;AAC/D;AACA;AACA;;;;;;;;;;;;;;;;;ACxFqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sEAAsE,mCAAmC;AACzG;AACA;AACA,aAAa,mEAAyB;AACtC,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,qEAA2B;AAClD,aAAa,mEAAyB;AACtC,KAAK;AACL;AACA;AACA;AACA;AACA,iEAAe,WAAW;;;;;;;;;;;;;;;;AC9DX;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,sDAAsD,oBAAoB;AACxH;;AAEA,mDAAmD,oDAAoD,oBAAoB;AAC3H;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,6BAA6B,YAAY,OAAO,oBAAoB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,gBAAgB,yCAAyC;AACzD;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,gBAAgB;AAChB,gBAAgB;AAChB,YAAY;AACZ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACpLA;AACA;AACA;AACmC;;AAEpB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,wCAAM;AACpB;;AAEA;AACA,0EAA0E,UAAU;AACpF;AACA;;AAEA,wBAAwB,YAAY,6CAA6C,UAAU,UAAU,YAAY;AACjH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,YAAY,EAAE,UAAU,EAAE,YAAY;AACpE;;AAEA,+BAA+B,gBAAgB,EAAE,cAAc,EAAE,gBAAgB;AACjF;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACjDkC;AAC0B;;AAE7C;AACf;AACA;AACA;AACA,MAAM,OAAO;AACb,MAAM,OAAO;AACb,MAAM,QAAQ;AACd,MAAM,QAAQ;AACd,MAAM,oBAAoB;AAC1B,MAAM,QAAQ;AACd;AACA,uBAAuB,uGAAuG,qDAAqD;AACnL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,2DAAkB;AAC7B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,2EAA4B;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC/IkC;;AAEnB;AACf;AACA;AACA,aAAa,OAAO;AACpB,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD,kBAAkB,QAAQ,kBAAkB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA,2BAA2B,+CAAQ,EAAE,0DAA0D;AAC/F;AACA,kCAAkC,6BAA6B,oBAAoB,EAAE;AACrF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA,cAAc,aAAa,GAAG,yBAAyB;AACvD;AACA;;;;;;;U3DtGA;UACA;;UAEA;UACA,SAAS,iCAAmB;UAC5B;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA,uDAAuD,iCAAmB;;UAE1E;UACA;UACA;;;;;WCrBA;WACA,iCAAmB;WACnB;WACA;WACA;WACA,CAAC,iCAAmB,YAAY,YAAY;WAC5C;WACA,E;;;;;WCPA;WACA,iCAAmB;WACnB;WACA,KAAK,iCAAmB,wBAAwB,iCAAmB;WACnE,wCAAwC,yCAAyC;WACjF;WACA;WACA,E;;;;;WCPA,iCAAmB,qE;;;;;WCAnB;WACA,iCAAmB;WACnB;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;UENA;UACA;UACA;UACA,OAAO,iCAAmB;;;;;;;;;;;;;;ApEH1B;AACA,IAAI,IAAyD;AAC7D;AACA,MAAM,aAKJ;AACF,CAAC;AACD,O;;;;;;;;;A0HVA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/IiC;AACO;AACmB;AAC/B;AACC;AACtB;AACP,WAAW,+CAAQ,EAAE,4DAA4D,aAAa;AAC9F,cAAc,qDAAQ;AACtB;AACA,QAAQ,wEAAwB;AAChC;AACA;AACA;;;;;;;;;;;;;;;;;;;ACZsC;AACwC;AAC1C;AACpC;AACA;AACA;AACA,QAAQ,YAAY;AACpB;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,uDAAe,SAAS,uDAAe;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA,oBAAoB,wDAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,yBAAyB;AAC1G,6BAA6B,iDAAQ;AACrC,kDAAkD,oDAAa;AAC/D;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;;;;;;ACxCA;AAC4C;AAC5C;AAC+C;AACyB;AACxE;AACA,IAAI,gDAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,yBAAyB,EAAE;AACnF,iEAAiE,wBAAwB,EAAE;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,yBAAyB,EAAE;AACnF,iEAAiE,wBAAwB,EAAE;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA;AACA;AACA,kCAAkC;AAClC;AACA,8BAA8B,mBAAmB;AACjD,+BAA+B,UAAU;AACzC,8BAA8B,kBAAkB;AAChD;AACA;AACA;AACA;AACA;AACA,8BAA8B,YAAY;AAC1C;AACA,eAAe,+CAAQ,EAAE,OAAO,gDAAY,sBAAsB;AAClE;AACA;AACA;AACA;AACA,eAAe,+CAAQ,EAAE,OAAO,8CAAU,EAAE;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+CAAQ,EAAE,OAAO,4CAAQ,mCAAmC;AAC3E;AACA;AACA;AACA;AACA,eAAe,+CAAQ,EAAE,OAAO,gDAAY,yBAAyB;AACrE;AACA;AACA;AACA,kCAAkC,YAAY;AAC9C;AACA;AACA;AACA,oBAAoB;AACpB,2CAA2C;AAC3C,oBAAoB;AACpB,2CAA2C;AAC3C;AACA,eAAe,+CAAQ,EAAE,OAAO,iDAAa,gBAAgB;AAC7D;AACA;AACA,0BAA0B;AAC1B,oDAAoD,KAAK;AACzD;AACA;AACA;AACA;AACA,qCAAqC,eAAe;AACpD;AACA;AACA,gBAAgB;AAChB;AACA;AACA,eAAe,+CAAQ,EAAE,OAAO,wDAAoB,uDAAuD,8DAAmB,aAAa,EAAE;AAC7I;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD,+BAA+B,mCAAmC,aAAa;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+CAAQ,EAAE,2BAA2B,+CAAW,qBAAqB,6CAAS,GAAG,6CAAS,0CAA0C;AACnJ;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,uEAAuE,KAAK;AAC5E;AACA;AACA;AACA,eAAe,+CAAQ,EAAE,OAAO,0DAAsB,yDAAyD,gEAAqB,cAAc,EAAE;AACpJ;AACA,+BAA+B,uCAAuC,aAAa;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+CAAQ,EAAE,OAAO,+CAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,IAAI,GAAG;AACpB;AACA;AACA;AACA;AACA,eAAe,+CAAQ,EAAE,OAAO,+CAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,IAAI,GAAG;AACpB;AACA;AACA;AACA,iCAAiC,2BAA2B,aAAa;AACzE;AACA;AACA,eAAe,+CAAQ,EAAE;AACzB,0BAA0B;AAC1B;AACA,iCAAiC,2BAA2B,aAAa;AACzE;AACA;AACA,eAAe,+CAAQ,EAAE;AACzB,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC,oFAAoF;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,YAAY;AAC3C;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,iDAAiD,aAAa;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,UAAU;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;;;;;;;;;;;;;;;;;;ACtiG0B;AACjC;AACA;AACA;AACA;AACA;AACA,gCAAgC,IAAI,GAAG,IAAI,MAAM,IAAI,cAAc,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,OAAO,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,WAAW,IAAI;AACrK;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,uCAAuC,sBAAsB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+CAAQ,CAAC,+CAAQ,CAAC,+CAAQ,GAAG,YAAY,yBAAyB,6CAA6C,SAAS,+CAAQ,CAAC,+CAAQ,GAAG,oCAAoC,EAAE,IAAI;AAC/M;AACA;AACA,yBAAyB,+CAAQ,CAAC,+CAAQ,CAAC,+CAAQ,GAAG,YAAY,0BAA0B,6CAA6C,SAAS,+CAAQ,CAAC,+CAAQ,GAAG,oCAAoC,EAAE,IAAI;AAChN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB,+CAAQ,CAAC,+CAAQ,GAAG;AAC7C;AACA;AACA;AACA;AACA;AACA,qBAAqB,+CAAQ,CAAC,+CAAQ,GAAG;AACzC;AACA;AACA;AACA;AACA,qBAAqB,+CAAQ,CAAC,+CAAQ,GAAG;AACzC;AACA;AACA;AACA,qBAAqB,+CAAQ,CAAC,+CAAQ,GAAG;AACzC;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzXO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,IAAI;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oBAAoB;AACd;AACP;AACA;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7FA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,8EAA8E;AACvG;AACA;;AAEO;AACP;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEO;AACP;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;;AAEO;AACP,mCAAmC,oCAAoC;AACvE;;AAEO;AACP;AACA;;AAEO;AACP,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;;AAEO;AACP,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;;AAEO;AACP;AACA,kCAAkC,oCAAoC,aAAa,EAAE,EAAE;AACvF,CAAC;AACD;AACA;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM,gBAAgB;AACzC;AACA;AACA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;;AAEA;AACO;AACP,4BAA4B,sBAAsB;AAClD;AACA;AACA;;AAEA;AACO;AACP,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;;AAEO;AACP,oDAAoD,QAAQ;AAC5D;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA,iBAAiB,sFAAsF,aAAa,EAAE;AACtH,sBAAsB,gCAAgC,qCAAqC,0CAA0C,EAAE,EAAE,GAAG;AAC5I,2BAA2B,MAAM,eAAe,EAAE,YAAY,oBAAoB,EAAE;AACpF,sBAAsB,oGAAoG;AAC1H,6BAA6B,uBAAuB;AACpD,4BAA4B,wBAAwB;AACpD,2BAA2B,yDAAyD;AACpF;;AAEO;AACP;AACA,iBAAiB,4CAA4C,SAAS,EAAE,qDAAqD,aAAa,EAAE;AAC5I,yBAAyB,6BAA6B,oBAAoB,gDAAgD,gBAAgB,EAAE,KAAK;AACjJ;;AAEO;AACP;AACA;AACA,2GAA2G,sFAAsF,aAAa,EAAE;AAChN,sBAAsB,8BAA8B,gDAAgD,uDAAuD,EAAE,EAAE,GAAG;AAClK,4CAA4C,sCAAsC,UAAU,oBAAoB,EAAE,EAAE,UAAU;AAC9H;;AAEO;AACP,gCAAgC,uCAAuC,aAAa,EAAE,EAAE,OAAO,kBAAkB;AACjH;AACA;;AAEA;AACA,yCAAyC,6BAA6B;AACtE,CAAC;AACD;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP,4CAA4C;AAC5C;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5OA;AACA;AACA;AACA;AACA;AAC+C;AACd;AACN;AACC;AAC5B,iEAAe,wDAAiB,EAAC;;;;;;;;;;;;;;;;;;;;;ACTjC;AACA;AACA;AACA;AACA;AACgD;AACE;AACV;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA,WAAW,+CAAQ,CAAC,+CAAQ,CAAC,+CAAQ,GAAG,WAAW,aAAa;AAChE,iBAAiB,+CAAQ,CAAC,+CAAQ,GAAG,sBAAsB;AAC3D;AACA,KAAK,IAAI;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE,+CAAQ,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,qDAAe,IAAI,yCAAO;AAC7C;AACA;AACA,2BAA2B;AAC3B,kBAAkB;AAClB,oBAAoB;AACpB,uBAAuB;AACvB,MAAM;AACN;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA,gEAAgE,oDAAa;AAC7E,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA,kEAAkE,oDAAa;AAC/E,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA,+DAA+D,oDAAa;AAC5E,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iCAAiC,2CAA2C;AAC5E;AACA,sBAAsB;AACtB,wBAAwB;AACxB,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0DAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0DAAa;AAChC;AACA,4CAA4C;AAC5C;AACA,SAAS,EAAE;AACX,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,gCAAgC,4DAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AAC4B;;;;;;;;;;;;;;;;;;;;;AClOK;AAC3B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA,IAAI,gDAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA,IAAI,gDAAS;AACb;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA,IAAI,gDAAS;AACb;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC;AACA,IAAI,gDAAS;AACb;AACA;AACA;AACA;AACA,CAAC;AAC4B;;;;;;;;;;;;;;;;;;;;AC/CyM;AACvH;AACxG;AACP;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA,4BAA4B,2EAAgB;AAC5C;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iCAAiC,mBAAmB;AACpD;AACA;AACA,YAAY,2EAAgB;AAC5B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,YAAY,yEAAc;AAC1B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qDAAiB;AACvC;AACA;AACA,YAAY,4EAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,YAAY,wEAAa;AACzB;AACA;AACA,kBAAkB,6EAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,wEAAa;AACzB;AACA;AACA,kBAAkB,6EAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,0EAAe;AAC3B;AACA;AACA,kBAAkB,2EAAgB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,uEAAY;AACxB;AACA;AACA;AACA,0BAA0B,yDAAqB;AAC/C;AACA;AACA,0DAA0D,gBAAgB,EAAE;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,YAAY,0EAAe;AAC3B;AACA;AACA,0BAA0B,qDAAiB;AAC3C;AACA;AACA;AACA;AACA,YAAY,0EAAe;AAC3B;AACA;AACA;AACA,8BAA8B,+CAAW,sHAAsH,8DAA0B;AACzL;AACA;AACA,8CAA8C,sBAAsB;AACpE;AACA;AACA;AACA;AACA,0BAA0B,qDAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChLA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,8EAA8E;AACvG;AACA;;AAEO;AACP;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEO;AACP;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;;AAEO;AACP,mCAAmC,oCAAoC;AACvE;;AAEO;AACP;AACA;;AAEO;AACP,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;;AAEO;AACP,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;;AAEO;AACP;AACA,kCAAkC,oCAAoC,aAAa,EAAE,EAAE;AACvF,CAAC;AACD;AACA;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM,gBAAgB;AACzC;AACA;AACA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;;AAEA;AACO;AACP,4BAA4B,sBAAsB;AAClD;AACA;AACA;;AAEA;AACO;AACP,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;;AAEO;AACP,oDAAoD,QAAQ;AAC5D;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA,iBAAiB,sFAAsF,aAAa,EAAE;AACtH,sBAAsB,gCAAgC,qCAAqC,0CAA0C,EAAE,EAAE,GAAG;AAC5I,2BAA2B,MAAM,eAAe,EAAE,YAAY,oBAAoB,EAAE;AACpF,sBAAsB,oGAAoG;AAC1H,6BAA6B,uBAAuB;AACpD,4BAA4B,wBAAwB;AACpD,2BAA2B,yDAAyD;AACpF;;AAEO;AACP;AACA,iBAAiB,4CAA4C,SAAS,EAAE,qDAAqD,aAAa,EAAE;AAC5I,yBAAyB,6BAA6B,oBAAoB,gDAAgD,gBAAgB,EAAE,KAAK;AACjJ;;AAEO;AACP;AACA;AACA,2GAA2G,sFAAsF,aAAa,EAAE;AAChN,sBAAsB,8BAA8B,gDAAgD,uDAAuD,EAAE,EAAE,GAAG;AAClK,4CAA4C,sCAAsC,UAAU,oBAAoB,EAAE,EAAE,UAAU;AAC9H;;AAEO;AACP,gCAAgC,uCAAuC,aAAa,EAAE,EAAE,OAAO,kBAAkB;AACjH;AACA;;AAEA;AACA,yCAAyC,6BAA6B;AACtE,CAAC;AACD;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP,4CAA4C;AAC5C;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;A/E5OgC;AACmB;;;;;;;;;;;;;;;;;;AgFDH;;AAEhD;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,0BAA0B,yDAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B,eAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,0BAA0B;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACpGsC;AACtC;;AAEA;AACA;AACA;AACe;AACf;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA,+GAA+G,MAAM,IAAI,OAAO;AAChI;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA,0BAA0B,qDAAO;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA,MAAM;AACN,aAAa,OAAO;AACpB,UAAU,QAAQ;AAClB;AACA;AACA,eAAe,OAAO;AACtB;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mDAAmD,UAAU,mCAAmC,aAAa;AAC7G;AACA;;AAEA;AACA;AACA;AACA,WAAW,2BAA2B;AACtC;AACA;AACA;AACA,eAAe;AACf;AACA,iDAAiD;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC9KkD;;AAElD;AACA;AACA;AACe;AACf;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0BAA0B,uDAAiB;AAC3C,wBAAwB,uDAAiB;AACzC;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA,MAAM;AACN,eAAe,OAAO;AACtB;AACA;AACA;AACA,mDAAmD,aAAa;AAChE;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA,MAAM;AACN,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;;;;;;U1E3EA;UACA;;UAEA;UACA,SAAS,iCAAmB;UAC5B;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA,uDAAuD,iCAAmB;;UAE1E;UACA;UACA;;;;;WCrBA;WACA,iCAAmB;WACnB;WACA;WACA;WACA,CAAC,iCAAmB,YAAY,YAAY;WAC5C;WACA,E;;;;;WCPA;WACA,iCAAmB;WACnB;WACA,KAAK,iCAAmB,wBAAwB,iCAAmB;WACnE,wCAAwC,yCAAyC;WACjF;WACA;WACA,E;;;;;WCPA,iCAAmB,qE;;;;;WCAnB;WACA,iCAAmB;WACnB;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;UENA;UACA;UACA;UACA,OAAO,iCAAmB;;;;;;;;;;;;;;AqEH1B,gDAAgD,GAAG,IAAiD,oBAAoB,KAAK,aAAiI,CAAC,oBAAoB,mBAAmB,SAAS,SAAS,8BAAmB,IAAI,4BAA4B,YAAY,qBAAqB,uCAAuC,8BAAmB,mBAAmB,OAAO,8BAAmB,KAAK,8BAAmB,KAAK,8BAAmB,mBAAmB,8BAAmB,oCAAoC,oBAAoB,EAAE,CAAC,8BAAmB,eAAe,4FAA4F,eAAe,wCAAwC,SAAS,EAAE,CAAC,8BAAmB,iBAAiB,WAAW,8BAAmB,kBAAkB,qDAAqD,0BAA0B,GAAG,8BAAmB,yCAAyC,sBAAsB,yCAAyC,8BAAmB,mBAAmB,YAAY,eAAe,SAAS,CAAC,8BAAmB,eAAe,4CAA4C,iBAAiB,6BAA6B,UAAU,OAAO,8BAAmB,cAAc,CAAC,8BAAmB,iBAAiB,iDAAiD,CAAC,8BAAmB,MAAM,8BAAmB,CAAC,8BAAmB,MAAM,kBAAkB,aAAa,4CAA4C,0CAA0C,+CAA+C,yDAAyD,sCAAsC,sCAAsC,uCAAuC,wCAAwC,+CAA+C,SAAS,kDAAkD,SAAS,GAAG,uOAAuO,eAAe,kIAAkI,YAAY,iBAAiB,MAAM,wCAAwC,gCAAgC,eAAe,kMAAkM,yBAAyB,cAAc,+DAA+D,cAAc,yBAAyB,kDAAkD,KAAK,gBAAgB,gBAAgB,sBAAsB,gBAAgB,EAAE,iFAAiF,sBAAsB,yDAAyD,uBAAuB,sCAAsC,wBAAwB,4BAA4B,6DAA6D,gBAAgB,EAAE,iEAAiE,+DAA+D,kBAAkB,6DAA6D,YAAY,GAAG,EAAE,0DAA0D,8CAA8C,2EAA2E,oHAAoH,4EAA4E,kBAAkB,qBAAqB,EAAE,4EAA4E,oBAAoB,0EAA0E,YAAY,EAAE,qBAAqB,sFAAsF,gDAAgD,sDAAsD,8CAA8C,mFAAmF,oBAAoB,cAAc,sFAAsF,cAAc,8BAA8B,cAAc,yCAAyC,oBAAoB,0EAA0E,kIAAkI,qBAAqB,gBAAgB,qBAAqB,gBAAgB,6BAA6B,oDAAoD,oBAAoB,wBAAwB,mBAAmB,uBAAuB,gFAAgF,2GAA2G,qBAAqB,sGAAsG,uJAAuJ,mBAAmB,+CAA+C,6IAA6I,2CAA2C,wCAAwC,mKAAmK,yBAAyB,4DAA4D,KAAK,4BAA4B,2BAA2B,oEAAoE,6GAA6G,cAAc,yBAAyB,0DAA0D,wEAAwE,IAAI,yCAAyC,SAAS,8BAA8B,EAAE,WAAW,UAAU,GAAG,kCAAkC,4CAA4C,wDAAwD,kBAAkB,aAAa,gDAAgD,GAAG,EAAE,0DAA0D,yDAAyD,iBAAiB,2DAA2D,oBAAoB,8DAA8D,aAAa,6DAA6D,uBAAuB,8BAA8B,sBAAsB,uHAAuH,4EAA4E,aAAa,6DAA6D,GAAG,EAAE,UAAU,mBAAmB,2IAA2I,+FAA+F,qGAAqG,yCAAyC,uBAAuB,gGAAgG,uIAAuI,4BAA4B,gKAAgK,eAAe,yDAAyD,6BAA6B,qBAAqB,yCAAyC,wBAAwB,SAAS,IAAI,kCAAkC,SAAS,wCAAwC,wCAAwC,gBAAgB,qBAAqB,IAAI,iCAAiC,SAAS,mEAAmE,uQAAuQ,gBAAgB,IAAI,oDAAoD,SAAS,mEAAmE,2RAA2R,qBAAqB,kFAAkF,aAAa,2DAA2D,oBAAoB,kFAAkF,eAAe,kDAAkD,4BAA4B,iFAAiF,aAAa,+RAA+R,sBAAsB,MAAM,6BAA6B,8BAA8B,kCAAkC,2DAA2D,6MAA6M,SAAS,4FAA4F,IAAI,4GAA4G,GAAG,G;;;;;;;;;;;ACC/tV;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY;AACZ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;;;;;;;;;;;ACnKA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/IA;AACA;AACA;AACA;AACA;AAC+C;AACd;AACN;AACC;AAC5B,iEAAe,wDAAiB,EAAC;;;;;;;;;;;;;;;;;;;;;;ACTjC;AACA;AACA;AACA;AACA;AACgD;AACW;AACnB;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA,WAAW,+CAAQ,CAAC,+CAAQ,CAAC,+CAAQ,GAAG,WAAW,aAAa;AAChE,iBAAiB,+CAAQ,CAAC,+CAAQ,GAAG,sBAAsB;AAC3D;AACA,KAAK,IAAI;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE,+CAAQ,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,qDAAe,IAAI,yCAAO;AAC7C;AACA;AACA,2BAA2B;AAC3B,kBAAkB;AAClB,oBAAoB;AACpB,uBAAuB;AACvB,MAAM;AACN;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA,gEAAgE,oDAAa;AAC7E,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA,kEAAkE,oDAAa;AAC/E,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA,+DAA+D,oDAAa;AAC5E,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iCAAiC,2CAA2C;AAC5E;AACA,sBAAsB;AACtB,wBAAwB;AACxB,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0DAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0DAAa;AAChC;AACA,4CAA4C;AAC5C;AACA,SAAS,EAAE;AACX,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,gCAAgC,qEAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AAC4B;;;;;;;;;;;;;;;;;;;;;ACjOK;AAC3B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA,IAAI,gDAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA,IAAI,gDAAS;AACb;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA,IAAI,gDAAS;AACb;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC;AACA,IAAI,gDAAS;AACb;AACA;AACA;AACA;AACA,CAAC;AAC4B;;;;;;;;;;;;;;;;;;;;;AC/CkN;AAChI;AACxG;AACP;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA,4BAA4B,oFAAgB;AAC5C;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iCAAiC,mBAAmB;AACpD;AACA;AACA,YAAY,oFAAgB;AAC5B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,YAAY,kFAAc;AAC1B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qDAAiB;AACvC;AACA;AACA,YAAY,qFAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,YAAY,iFAAa;AACzB;AACA;AACA,kBAAkB,sFAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,iFAAa;AACzB;AACA;AACA,kBAAkB,sFAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,mFAAe;AAC3B;AACA;AACA,kBAAkB,oFAAgB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,gFAAY;AACxB;AACA;AACA;AACA,0BAA0B,yDAAqB;AAC/C;AACA;AACA,0DAA0D,gBAAgB,EAAE;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,YAAY,mFAAe;AAC3B;AACA;AACA,0BAA0B,qDAAiB;AAC3C;AACA;AACA;AACA;AACA,YAAY,mFAAe;AAC3B;AACA;AACA;AACA,8BAA8B,+CAAW,sHAAsH,8DAA0B;AACzL;AACA;AACA,8CAA8C,sBAAsB;AACpE;AACA;AACA;AACA;AACA,0BAA0B,qDAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,IAA0C;AAC/C;AACA;AACA,EAAE,iCAAO,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,kGAAC;AACrB;AACA,MAAM,EAWJ;AACF;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oCAAoC,aAAa;AACjD,sCAAsC,eAAe;AACrD,sCAAsC,eAAe;;AAErD;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA,yFAAyF,KAAK,wBAAwB;AACtH;;AAEA;AACA,oEAAoE;AACpE,iBAAiB;;AAEjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC;AACxC,wCAAwC;AACxC,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA,iCAAiC;AACjC,MAAM;AACN;AACA,IAAI;;AAEJ,mBAAmB;AACnB,eAAe;;;AAGf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,WAAW;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;AAOA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,gEAAgE,gDAAgD,EAAE;AAClH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,mBAAmB;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,cAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA,gCAAgC,2CAA2C;AAC3E;AACA;AACA,6BAA6B;AAC7B;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,2DAA2D;;AAE3D;AACA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,kCAAkC;;AAElC,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,UAAU,cAAc,EAAE,EAAE;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA,eAAe,2EAAwB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,EAAE,yEAAyE,EAAE,oEAAoE,EAAE;AACzK;AACA,uBAAuB;AACvB,sBAAsB;AACtB,aAAa;AACb,cAAc;AACd,sBAAsB;AACtB,uBAAuB;AACvB,sBAAsB;AACtB,mBAAmB;AACnB,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA,qBAAqB,QAAQ,eAAe,EAAE,iBAAiB,QAAQ,gBAAgB,EAAE;AACzF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+FAA+F;AAC/F;AACA;;AAEA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,8CAA8C;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;;AAEjC;AACA,eAAe,sBAAsB;AACrC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,+DAA+D;;AAE/D,kBAAkB,8BAA8B;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,sDAAsD;;AAEtD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,8BAA8B,gBAAgB,EAAE;AAClF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,6BAA6B;AAChD;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,0BAA0B;AAC/C;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;AC74DD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,mBAAO,CAAC,2DAAS;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClHA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,8EAA8E;AACvG;AACA;;AAEO;AACP;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEO;AACP;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;;AAEO;AACP,mCAAmC,oCAAoC;AACvE;;AAEO;AACP;AACA;;AAEO;AACP,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;;AAEO;AACP,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;;AAEO;AACP;AACA,kCAAkC,oCAAoC,aAAa,EAAE,EAAE;AACvF,CAAC;AACD;AACA;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM,gBAAgB;AACzC;AACA;AACA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;;AAEA;AACO;AACP,4BAA4B,sBAAsB;AAClD;AACA;AACA;;AAEA;AACO;AACP,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;;AAEO;AACP,oDAAoD,QAAQ;AAC5D;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA,iBAAiB,sFAAsF,aAAa,EAAE;AACtH,sBAAsB,gCAAgC,qCAAqC,0CAA0C,EAAE,EAAE,GAAG;AAC5I,2BAA2B,MAAM,eAAe,EAAE,YAAY,oBAAoB,EAAE;AACpF,sBAAsB,oGAAoG;AAC1H,6BAA6B,uBAAuB;AACpD,4BAA4B,wBAAwB;AACpD,2BAA2B,yDAAyD;AACpF;;AAEO;AACP;AACA,iBAAiB,4CAA4C,SAAS,EAAE,qDAAqD,aAAa,EAAE;AAC5I,yBAAyB,6BAA6B,oBAAoB,gDAAgD,gBAAgB,EAAE,KAAK;AACjJ;;AAEO;AACP;AACA;AACA,2GAA2G,sFAAsF,aAAa,EAAE;AAChN,sBAAsB,8BAA8B,gDAAgD,uDAAuD,EAAE,EAAE,GAAG;AAClK,4CAA4C,sCAAsC,UAAU,oBAAoB,EAAE,EAAE,UAAU;AAC9H;;AAEO;AACP,gCAAgC,uCAAuC,aAAa,EAAE,EAAE,OAAO,kBAAkB;AACjH;AACA;;AAEA;AACA,yCAAyC,6BAA6B;AACtE,CAAC;AACD;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP,4CAA4C;AAC5C;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;AC1OA,SAAS,mBAAO,CAAC,wCAAM;AACvB,SAAS,mBAAO,CAAC,wCAAM;;AAEvB;AACA;AACA;;AAEA;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;ACjCA,UAAU,mBAAO,CAAC,0DAAW;AAC7B,kBAAkB,mBAAO,CAAC,kEAAmB;;AAE7C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AC5GA,UAAU,mBAAO,CAAC,0DAAW;AAC7B,kBAAkB,mBAAO,CAAC,kEAAmB;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AC5BA,eAAe,GAAG,IAAiD,oBAAoB,KAAK,aAAiI,CAAC,oBAAoB,mBAAmB,SAAS,cAAc,4BAA4B,YAAY,qBAAqB,2DAA2D,uCAAuC,qCAAqC,oBAAoB,EAAE,iBAAiB,4FAA4F,eAAe,wCAAwC,SAAS,EAAE,mBAAmB,8BAA8B,qDAAqD,0BAA0B,6CAA6C,sBAAsB,6DAA6D,YAAY,eAAe,SAAS,iBAAiB,iCAAiC,iBAAiB,YAAY,UAAU,sBAAsB,mBAAmB,iDAAiD,iBAAiB,kBAAkB,aAAa,OAAO,gCAAgC,yCAAyC,wHAAwH,0PAA0P,sCAAsC,4CAA4C,uBAAuB,kBAAkB,eAAe,uBAAuB,yBAAyB,KAAK,qBAAqB,oCAAoC,OAAO,qBAAqB,EAAE,OAAO,KAAK,6CAA6C,MAAM,YAAY,SAAS,aAAa,iBAAiB,OAAO,yBAAyB,oKAAoK,oDAAoD,EAAE,oFAAoF,6BAA6B,EAAE,mHAAmH,YAAY,EAAE,wGAAwG,YAAY,GAAG,QAAQ,gBAAgB,cAAc,UAAU,iBAAiB,wBAAwB,qBAAqB,KAAK,qBAAqB,yBAAyB,sBAAsB,yDAAyD,kBAAkB,6CAA6C,uEAAuE,eAAe,oBAAoB,cAAc,aAAa,6CAA6C,2BAA2B,gDAAgD,cAAc,2CAA2C,iKAAiK,cAAc,mCAAmC,oBAAoB,6EAA6E,mDAAmD,YAAY,GAAG,G;;;;;;;;;;;;;;;ACArjH;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACjGA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,sBAAsB,+BAA+B;AACrD,sBAAsB,iBAAiB;AACvC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iCAAiC,EAAE;AACrF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,cAAc;;AAE3C;;AAEA;AACA;AACA;AACA,6BAA6B,UAAU;;AAEvC;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,aAAoB;;AAErC;AACA;AACA;AACA,YAAY,aAAoB;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG;AACR;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,qBAAM;AAC9C;AACA;AACA,kBAAkB,qBAAM,eAAe,qBAAM;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA,oCAAoC;AACpC;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA,iCAAiC;AACjC,uCAAuC,wBAAwB,EAAE;AACjE,0BAA0B;;AAE1B;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,wCAAwC,EAAE;AAC1C;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,+BAA+B,oBAAoB,EAAE;AACrD;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,SAAS,qBAAqB;;AAExD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD,iCAAiC,sBAAsB;AACvD;AACA,kBAAkB;AAClB,MAAM,IAAqC;AAC3C;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAoB;AACtC;AACA;AACA,mBAAmB;AACnB;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,OAAO,UAAU,IAAqC;AACtD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,GAAG,UAAU,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,mBAAmB;AACtC,+BAA+B;AAC/B;AACA,GAAG;AACH;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B,WAAW;AACX;AACA,GAAG,UAAU,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,oCAAoC;AACpC;AACA,qCAAqC;AACrC;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAEQ;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,6CAA6C,qCAAqC,EAAE;AACpF;;AAEA;AACA;AACA;;AAEA,oCAAoC,yCAAyC,EAAE;AAC/E;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kBAAkB;AAC3C;AACA;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sDAAsD,EAAE;AACtF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;;AAEA;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iCAAiC;AACnE,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,iCAAiC;AACnE,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yBAAyB;AAC1C,GAAG;AACH;AACA;AACA,iBAAiB,+BAA+B;AAChD;AACA;;AAEA;AACA;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO,MAAM,EAEN;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,IAAqC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,sBAAsB,mBAAmB;AACzC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,4CAA4C,eAAe;AAC3D,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kDAAkD;AAClD,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,KAAK;AACL,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,KAAK,UAAU,KAAqC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,qCAAqC,gEAAgE;AACrG;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,4BAA4B,+BAA+B;AAC3D,4BAA4B,+BAA+B;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C,kDAAkD;AAClD;AACA;AACA,mCAAmC;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK,uFAAuF;AAC5F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG,+BAA+B;AAClC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,oBAAoB;AACxC,sBAAsB,4BAA4B;AAClD;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mBAAmB;AACnB,yBAAyB;AACzB;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6CAA6C;AAC9E;AACA;AACA,6CAA6C,4CAA4C;;AAEzF;AACA;AACA;;AAEA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,GAAG,MAAM,EAGN;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK,2CAA2C,8BAA8B,EAAE;;AAEhF;AACA,wCAAwC,OAAO;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAqC;AACrD;AACA,oBAAoB,CAAI;AACxB;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;;AAE1B,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAM,IAAqC;AAC3C;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0BAA0B;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB,EAAE;;AAEpD;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,oBAAoB;AACpB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,oBAAoB,KAAqC;AACzD;AACA,MAAM,CAAE;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C,qBAAqB,+BAA+B;AACpD;AACA;AACA,GAAG;AACH,yBAAyB;AACzB;AACA,sBAAsB,iCAAiC;AACvD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK,MAAM,EAEN;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK,UAAU,IAAqC;AACpD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,8BAA8B;AAC9B,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA,KAAK,MAAM,EAEN;AACL;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA,oBAAoB;AACpB;;AAEA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;;AAEA;AACA,QAAQ,KAAqC;AAC7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,YAAY,KAAqC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA,0CAA0C,2BAA2B,EAAE;AACvE,KAAK;AACL;AACA,0CAA0C,4BAA4B,EAAE;AACxE,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,aAAa;AACjC;AACA,qBAAqB,cAAc;AACnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,aAAa,kBAAkB;AAC/B;AACA,eAAe,oBAAoB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA,2DAA2D;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,KAAqC;AAC/C;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,yBAAyB;AAC9C;AACA;AACA,wBAAwB;AACxB;AACA,4BAA4B,4BAA4B;AACxD,4BAA4B,gCAAgC;AAC5D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,oBAAoB;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yDAAyD,UAAU;AACnE,iBAAiB,wBAAwB,OAAO,uBAAuB;AACvE;AACA;AACA,iBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA;;AAEA;AACA,UAAU,oBAAoB;AAC9B;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,IAAqC;AAC7C;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO,kDAAkD;AACzD;AACA;AACA;AACA;AACA,OAAO,kDAAkD;AACzD;AACA;AACA;AACA;AACA,OAAO;AACP,mCAAmC,gEAAgE;AACnG;AACA;AACA;AACA,gCAAgC;AAChC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,SAAS;AAChC;AACA,2CAA2C;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,uBAAuB,OAAO,gCAAgC;AAC/E,wDAAwD,oBAAoB;AAC5E;AACA;AACA;AACA,2BAA2B,gEAAgE;AAC3F,OAAO;AACP,YAAY,IAAqC;AACjD;AACA;AACA,mCAAmC,iCAAiC;AACpE;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,2DAA2D,oBAAoB;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA,sDAAsD,gCAAgC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,KAAqC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,KAAqC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,4BAA4B,6BAA6B;AACzD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU,IAAqC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B,wBAAwB;AACnD;AACA;AACA;AACA;AACA,+BAA+B,yBAAyB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yBAAyB;AAC1D;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,8BAA8B;AACnD;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4EAA4E;AAC5E;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2BAA2B;AACtD,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,6CAA6C,EAAE;AACtD;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,UAAU;AACV;AACA,uCAAuC,SAAS;AAChD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oDAAoD,4BAA4B,EAAE;AAClF,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oDAAoD,+BAA+B,EAAE;AACrF,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8CAA8C,aAAa;;AAE3D;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAM,KAAqC;AAC3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAM,KAAqC;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,iCAAiC,qCAAqC;;AAEtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,uCAAuC,EAAE;AACpF;AACA;AACA;AACA,6CAA6C,2CAA2C,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,8BAA8B,EAAE;AACrE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kCAAkC,uCAAuC;;AAEzE,qCAAqC,0BAA0B;;AAE/D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,wCAAwC,gBAAgB;AACxD;AACA;AACA,gEAAgE,sBAAsB,EAAE;AACxF;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,wBAAwB;AAC3C;AACA;AACA;AACA;AACA;AACA,WAAW,uBAAuB;AAClC,SAAS,UAAU,IAAqC;AACxD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,yBAAyB,EAAE;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,QAAQ,IAC+B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAC6B;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,iEAAe,GAAG,EAAC;;;;;;;;;;;;;;;;;;;;;;;;AClwQnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,yBAAyB;AACxC,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,qBAAM;AACjB,MAAM,qBAAM;AACZ;AACA;;AAEA;AACA,qBAAqB;;AAErB;;AAEA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG,GAAG,gBAAgB;;AAEtB;AACA;AACA,GAAG,GAAG,gBAAgB;AACtB;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,cAAc;AACzB,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,2BAA2B,EAAE;AACnE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,2CAA2C,0BAA0B,EAAE;AACvE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0BAA0B,cAAc,qBAAqB;;AAE7D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO,IAAqC;AAC5C;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS,IAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,OAAO,IAAqC;AAC5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,oCAAoC,EAAE;AAClE;AACA;;AAEA;AACA,4BAA4B;AAC5B,uEAAuE,EAAE;AACzE;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;;AAE1B;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ;;AAER;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,IAAqC;AAC5C;AACA;AACA;AACA;;AAEA,gCAAgC;AAChC,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,uBAAuB,EAAE;;AAE9D;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,SAAS,qBAAqB;;AAE1D;AACA;AACA;;AAEA;AACA,OAAO,IAAqC;AAC5C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA,SAAS,IAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,6BAA6B,oCAAoC,EAAE;;AAEnE;AACA,KAAK,KAAqC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA,SAAS,IAAqC;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,mBAAmB,EAAE;AACnD,+BAA+B,yCAAyC,EAAE;AAC1E,GAAG;AACH,SAAS,IAAqC;AAC9C;AACA;AACA;AACA;;AAEA;AACA,gDAAgD,yBAAyB,EAAE;AAC3E;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB,EAAE;AACtD,mCAAmC,wCAAwC,EAAE;AAC7E,OAAO;AACP,aAAa,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,kBAAkB,EAAE;AACtD,mCAAmC,+CAA+C,EAAE;AACpF,OAAO;AACP,aAAa,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA,yCAAyC,aAAa;AACtD;AACA;;AAEA;AACA;;AAEA,OAAO,IAAqC;AAC5C;AACA;AACA,6CAA6C,6CAA6C,EAAE;AAC5F;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,iCAAiC,eAAe;;AAEhD,OAAO,IAAqC;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iCAAiC,eAAe;;AAEhD,OAAO,IAAqC;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,iCAAiC,eAAe;;AAEhD,OAAO,IAAqC;AAC5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB,EAAE;AACjD;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,8BAA8B,yBAAyB,EAAE;AACzD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD,aAAoB;AACtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAqC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,KAAqC;AAClD;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,KAAqC;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C,uBAAuB,2CAA2C;AAClE,KAAK;AACL;AACA,wBAAwB,0CAA0C;AAClE;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,4BAA4B,EAAE;AACxD;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,SAAS,IAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,4BAA4B;AAC5D,SAAS,IAAqC;AAC9C;AACA;AACA,GAAG,GAAG,yBAAyB;AAC/B;;AAEA;AACA,4CAA4C,mBAAmB,EAAE;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,IAAqC;AAC5C;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA,SAAS,IAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW;AACX;AACA;AACA;AACA,OAAO,KAAqC;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,YAAY;AACZ;AACA;AACA;AACA,OAAO,KAAqC;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,YAAY;AACZ;AACA;AACA;AACA,OAAO,KAAqC;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAqC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,YAAY;AACZ;AACA;AACA;AACA,OAAO,KAAqC;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,CAAC,EAAE;;AAEH;AACA;AACA,iCAAiC,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB;AAC1F,iBAAiB,iBAAiB,QAAQ,mBAAmB,GAAG,mBAAmB,GAAG,mBAAmB;AACzG,WAAW,aAAa;AACxB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU,qBAAqB,EAAE,EAAE;AACjE,2CAA2C,UAAU,0BAA0B,EAAE,EAAE;AACnF;;AAEA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,OAAO,KAAqC;AAC5C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,gCAAgC;AAChC,0BAA0B,iFAAiF,aAAa;AACxH,oCAAoC,+DAA+D,cAAc;AACjH,oDAAoD,6EAA6E,YAAY;AAC7I,sCAAsC,yEAAyE,aAAa;AAC5H,gDAAgD,yEAAyE,YAAY;AACrI,sCAAsC;AACtC,kCAAkC;AAClC,0BAA0B;;AAE1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sDAAsD;AACtD,oDAAoD;AACpD,sDAAsD;AACtD;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAkD;AAClD;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,KAAK,EAAC;AAC4F;;;;;;;;;;;;;;;;;;AC1tCzD;AACsB;;AAE/D;AACf;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB,cAAc,QAAQ;AACtB;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;;AAEA;;AAEA,IAAI,8FAAqC;AACzC,YAAY,wEAAqB;AACjC,YAAY,yFAAgC;AAC5C,KAAK;;AAEL;;AAEA,IAAI,8FAAqC;AACzC,YAAY,wEAAqB;AACjC,YAAY,yFAAgC;AAC5C,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,cAAc,sBAAsB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChT+B;AACD;AACP;;AAE4C;AACiB;AACN;AACP;AACE;;AAEf;AACoB;;AAEtB;AACd;;AAE3B;AACf;AACA;AACA,aAAa,OAAO;AACpB;AACA,gBAAgB,QAAQ,KAAK;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6BAA6B,yDAAyD;AACtF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,cAAc;AAC3B;AACA,qBAAqB,oBAAoB;AACzC;AACA,4DAA4D,UAAU;AACtE,iDAAiD,UAAU;AAC3D,KAAK;;AAEL,uDAAuD,MAAM;AAC7D,4CAA4C,MAAM;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,kDAAG,EAAE,oBAAoB;AAChD;AACA;;AAEA;AACA,yBAAyB,yDAAU,CAAC,iDAAG;;AAEvC;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA,IAAI,sHAA4D;AAChE;;AAEA;AACA;AACA;AACA;AACA,IAAI,sDAAO,CAAC,0CAAI;AAChB,qBAAqB,gDAAU,CAAC,kFAAiC;AACjE;;AAEA;AACA;AACA;AACA;AACA,yBAAyB,4EAAkB;AAC3C;AACA,IAAI,uEAAwB;;AAE5B;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,yEAAe;AACpC,IAAI,mEAAoB;AACxB;;AAEA;AACA;AACA;AACA;AACA,yBAAyB,kFAAuB;AAChD,IAAI,uEAAwB;AAC5B;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,+EAAoB;AAC5C,IAAI,sEAAuB;AAC3B;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,2EAAiB;AACzC,IAAI,sEAAuB;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8DAAa;AAClC,sBAAsB,kEAAiB,CAAC,0EAAyB;AACjE;;AAEA,qBAAqB,gEAAa;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sCAAsC,8EAAqB;AAC3D;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACtKyD;AACqB;AACjC;;AAE7C;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,WAAW;AACxB,eAAe;AACf,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA,4EAA4E;AAC5E;;AAEA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA,uCAAuC,+FAAyC;AAChF;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,QAAQ,8FAAqC;AAC7C;AACA,gBAAgB,0FAAiC;AACjD,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,iBAAiB,6EAAqB;AACtC;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;;AAEA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;;AAEA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACzFiE;AACE;AACA;;AAEH;;AAER;AACsB;;AAE/D;AACf;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wEAAqB;AACpC,iBAAiB,wEAAqB;AACtC;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,eAAe,wEAAqB;AACpC,iBAAiB,wEAAqB;AACtC;AACA,OAAO;AACP,kCAAkC,0DAA0D;AAC5F;AACA;AACA;AACA;AACA,eAAe,wEAAqB;AACpC,iBAAiB,wEAAqB;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA,kBAAkB,wEAAqB,oCAAoC,eAAe;AAC1F,IAAI,8FAAqC;AACzC,YAAY,wEAAqB,oCAAoC,eAAe;AACpF,YAAY,0FAAiC;AAC7C,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ;AAC/C;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;AACA;AACA,OAAO,+IAA+I;AACtJ,OAAO;AACP;;AAEA;;AAEA;AACA;AACA,SAAS,oBAAoB,UAAU;AACvC;AACA;AACA,SAAS;AACT;AACA,6CAA6C;AAC7C,KAAK;;AAEL;AACA,wBAAwB,IAAI,aAAa,0BAA0B,GAAG,gBAAgB;AACtF;AACA,WAAW,gFAAwB;AACnC;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;;AAEA;AACA,OAAO,6HAA6H;AACpI,OAAO;AACP;;AAEA;;AAEA;AACA,wBAAwB,IAAI,aAAa,oBAAoB;AAC7D,WAAW,gFAAwB;AACnC;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,wBAAwB,IAAI,kBAAkB,2BAA2B,GAAG,gBAAgB;AAC5F,WAAW,iFAAyB;AACpC;;AAEA;AACA,yBAAyB,6DAAgB;AACzC;;AAEA;AACA;;AAEA;AACA,sCAAsC,EAAE,QAAQ;AAChD;AACA,KAAK;;AAEL;;AAEA,wBAAwB,IAAI,yBAAyB,qBAAqB;AAC1E,WAAW,iFAAyB;AACpC;AACA;;;;;;;;;;;;;;;;ACvKe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACjG0F;;AAErB;AACe;;AAEX;;AAE5B;;AAE9B;AACf;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA,0BAA0B,kEAAgB;AAC1C,mCAAmC,iEAAe;;AAElD;AACA,WAAW,gEAAkB;AAC7B,kBAAkB,wEAAyB;AAC3C;;AAEA;;AAEA,IAAI,8EAAsB;AAC1B;AACA,aAAa,iEAAS;AACtB;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA,WAAW,gGAAsC;AACjD;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAuC,yDAAO;AAC9C,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0FAAgC;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO,IAAI,QAAQ,IAAI,KAAK;AAC1C,iBAAiB,UAAU,IAAI,IAAI,MAAM;AACzC,aAAa,WAAW;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA,mDAAmD,SAAS,GAAG,UAAU;AACzE;;AAEA;AACA;AACA,uGAAuG,SAAS,GAAG,UAAU;AAC7H,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,yDAAO;AAChD;;;;;;;;;;;;;;;;;;;;;;;AC9N4C;AAC6B;AACJ;AACb;;AAEsB;AACL;AACK;;AAE/D;AACf;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA,yBAAyB,wDAAS;AAClC;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,6BAA6B,oGAAyC;AACtE;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,6BAA6B,oGAAyC;AACtE;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;AACA;;AAEA;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,SAAS,+FAAqC;AAC9C,kCAAkC,iGAAuC;AACzE,oBAAoB,wEAAqB,6CAA6C,iCAAiC;AACvH,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB,6CAA6C,iCAAiC;AACjH,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;;AAEA,uBAAuB,sGAA4C;;AAEnE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,iFAAuB;AAClC;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA,yBAAyB,0GAAgD;;AAEzE,mBAAmB,iFAAuB,cAAc,yBAAyB;AACjF;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA,4CAA4C,iCAAiC;AAC7E;AACA,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;;AAEA,uBAAuB,sGAA4C;;AAEnE,mBAAmB,iFAAuB,cAAc,2CAA2C;AACnG;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;;AAEA;;AAEA,WAAW,qFAA2B;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA,WAAW,qFAA2B,gBAAgB,YAAY;AAClE;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA,SAAS;AACT,OAAO;AACP,KAAK;;AAEL,2BAA2B,kBAAkB;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACxZ6E;AACM;;AAE3B;;AAEsB;AACrB;;AAEG;;AAE7C;AACf;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,gBAAgB,4FAAkC,CAAC,8EAAoB;AACvE;AACA;AACA;AACA,OAAO;AACP;AACA,gBAAgB,+FAAqC,CAAC,iFAAuB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,kBAAkB,wEAAqB,8CAA8C,YAAY;AACjG,IAAI,8FAAqC;AACzC,YAAY,wEAAqB,8CAA8C,YAAY;AAC3F,YAAY,0FAAiC;AAC7C,KAAK;AACL;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA,+BAA+B;;AAE/B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,eAAe;AAC5B,eAAe,OAAO,mBAAmB;AACzC;AACA;AACA;;AAEA,mBAAmB,8CAA8C;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,eAAe;AAC5B,eAAe,OAAO,mBAAmB;AACzC;AACA;AACA,sCAAsC,+FAAyC;AAC/E;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,QAAQ,8FAAqC;AAC7C;AACA,gBAAgB,0FAAiC;AACjD,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,yCAAyC,iEAAiE;AAC1G;AACA;AACA,OAAO,kFAAuB;AAC9B,OAAO,kFAAuB;AAC9B,OAAO,mFAAwB;AAC/B,OAAO,2FAAgC;AACvC,OAAO,8FAAmC;AAC1C,OAAO,4FAAiC;AACxC,OAAO,4FAAiC;AACxC,OAAO,gFAAqB;;AAE5B;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,gFAAgF,uBAAuB,EAAE,UAAU;;AAEnH;AACA;AACA,gBAAgB,qEAAqE,GAAG,eAAe;AACvG,KAAK;AACL,gBAAgB,YAAY,GAAG,0BAA0B,EAAE,gBAAgB;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,8BAA8B;AACpD;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACjOwD;AACsB;;AAE/D;AACf;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA,qCAAqC;;AAErC;AACA,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;;AAEA;AACA,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,uBAAuB;AACpC,eAAe;AACf;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACvRwD;AACsB;;AAElC;AACG;;AAEY;AACF;;AAE1C;AACf;AACA;AACA,cAAc,OAAO;AACrB;;AAEA,8BAA8B,6GAA6G;AAC3I;AACA;AACA,6BAA6B,uIAAuI;AACpK,gCAAgC,kGAAkG;AAClI,4BAA4B,+HAA+H;AAC3J,qBAAqB;AACrB;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA,kBAAkB,wEAAqB,kCAAkC,aAAa;AACtF,IAAI,8FAAqC;AACzC,YAAY,wEAAqB,kCAAkC,aAAa;AAChF,YAAY,0FAAiC;AAC7C,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO,oBAAoB,WAAW,mBAAmB;AACxE;AACA,gCAAgC,yBAAyB;AACzD;;AAEA;AACA,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;;AAEA,mBAAmB,0EAAoB;;AAEvC;AACA;;AAEA,oCAAoC,0EAA0B,YAAY,6HAA6H;AACvM;;AAEA,qBAAqB,mBAAmB;AACxC,0CAA0C,0EAA0B,YAAY,6HAA6H;AAC7M;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA,mCAAmC,2CAA2C;AAC9E;AACA;AACA;AACA,sBAAsB,wEAAqB;AAC3C,QAAQ,8FAAqC;AAC7C,gBAAgB,wEAAqB;AACrC,gBAAgB,0FAAiC;AACjD,SAAS;AACT;AACA;;AAEA,qBAAqB,0EAAoB;;AAEzC,aAAa,0EAA0B,YAAY,qIAAqI;AACxL,KAAK;AACL;AACA;AACA,aAAa,0EAA0B,YAAY,6EAA6E;AAChI;AACA;;AAEA;AACA;AACA,WAAW,wEAAyB;AACpC;;AAEA,oCAAoC,8CAA8C,KAAK;AACvF;AACA,4BAA4B,gFAA0B;AACtD;AACA,KAAK;AACL,4BAA4B,gFAA0B;AACtD;AACA,KAAK;AACL,2BAA2B,8EAAwB;AACnD;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AClK4D;;AAE7C;AACf,gBAAgB,kCAAkC;AAClD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6CAA6C;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,8CAA8C,gFAAqB;;AAEnE;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,gDAAgD,mFAAwB;AACxE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA,oDAAoD,kFAAuB,GAAG,eAAe;AAC7F;;AAEA;AACA;AACA,aAAa,mBAAmB;AAChC,eAAe;AACf,eAAe,iBAAiB;AAChC,eAAe,SAAS;AACxB;AACA;AACA,sCAAsC,kFAAuB;;AAE7D,mBAAmB,+BAA+B;AAClD;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,+BAA+B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrQ4D;AACa;;AAE1D;AACf;AACA,aAAa,QAAQ,wBAAwB,EAAE;AAC/C,aAAa,QAAQ,WAAW,wBAAwB,EAAE,EAAE;AAC5D,aAAa,kBAAkB;AAC/B;AACA,gBAAgB,qCAAqC;AACrD;AACA;AACA;AACA;;AAEA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,sFAA2B;AACtC;AACA,WAAW,sFAA2B;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,eAAe;AACf,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB;AACA;AACA;AACA;;AAEA,iCAAiC,sFAA2B;;AAE5D;AACA;AACA;AACA;AACA,iCAAiC,sFAA2B,IAAI,sFAA2B,GAAG,sFAA2B;AACzH,4DAA4D,sFAA2B;AACvF;AACA;;AAEA;AACA;;AAEA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,mFAAwB;AAC1C,KAAK;;AAEL;AACA,0CAA0C,mFAAwB,GAAG,yEAAyE;AAC9I,kBAAkB,0BAA0B;AAC5C;AACA;AACA;;AAEA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA,WAAW,6CAA6C;;AAExD;AACA;AACA;AACA;AACA,kBAAkB,kFAAuB;AACzC,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,6BAA6B;;AAEpD;;AAEA;AACA,gDAAgD,kFAAuB;AACvE;AACA;AACA;AACA;;AAEA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,kFAAuB;AACzC;AACA,KAAK;;AAEL;AACA;AACA;AACA,kBAAkB,kFAAuB;AACzC;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA,0CAA0C,kFAAuB;;AAEjE;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sCAAsC,2FAAgC,GAAG,8FAAmC;AAC5G;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,uDAAuD,qCAAqC;;AAE5F,kBAAkB,kCAAkC;AACpD;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,uBAAuB;AACpC,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA,sCAAsC,sFAA2B,IAAI,4FAAiC,GAAG,4FAAiC;;AAE1I;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL,0CAA0C,sFAA2B;;AAErE;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA,gDAAgD,sFAA2B;AAC3E;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA,gDAAgD,sFAA2B;AAC3E;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA,uEAAuE,sFAA2B;AAClG;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA,+EAA+E,sFAA2B;AAC1G;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA,sDAAsD,sFAA2B;AACjF,sEAAsE,sFAA2B;AACjG;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA,sDAAsD,sFAA2B;AACjF,sEAAsE,sFAA2B;AACjG;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,2CAA2C,sFAA2B;AACtE,0CAA0C,sFAA2B;AACrE;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,gFAAqB;AACzC;AACA,OAAO;;AAEP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,yCAAyC,gFAAqB;AAC9D;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,qCAAqC,qGAA2C;AAChF;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,mFAAwB;AACnE;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uBAAuB,2DAA2D;AAClF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,2DAA2D;AAClF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB,2DAA2D;;AAElF,qDAAqD,sFAA2B;;AAEhF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,2DAA2D;;AAElF;AACA,kDAAkD,sFAA2B;AAC7E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB,2DAA2D;AAClF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB,6DAA6D;AACpF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,qDAAqD;AAC5E;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,oDAAoD;AAC3E;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,oDAAoD;AAC3E;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,qDAAqD;AAC5E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC9jByE;AACjC;AACE;;AAE3B;AACf;AACA,aAAa,WAAW;AACxB,aAAa,OAAO;AACpB;AACA,gBAAgB,yBAAyB,KAAK;AAC9C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,mEAAc;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA,2BAA2B,yFAA+B;AAC1D;;AAEA;AACA,yDAAyD,sDAAO;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA,iBAAiB,wCAAwC;AACzD,gCAAgC,qGAA2C;;AAE3E;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,oDAAoD,sEAAuB;;AAE3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC7ImC;AACyB;AACkB;AACA;;AAE/D;AACf;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA,cAAc,wCAAM;AACpB,qCAAqC,8EAAqB;;AAE1D;AACA,uCAAuC,8EAAqB;AAC5D;AACA;AACA,OAAO;;AAEP;AACA,kBAAkB;AAClB;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,mBAAmB;AAChC,eAAe;AACf,eAAe,iBAAiB;AAChC,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gFAAqB;AAC9B,SAAS,mFAAwB;AACjC,SAAS,kFAAuB;AAChC,OAAO;AACP;AACA,SAAS,gFAAqB;AAC9B,SAAS,mFAAwB;AACjC,SAAS,kFAAuB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oCAAoC,8FAAqC;AACzE;;AAEA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACpOmC;;AAEoB;AACN;AACF;AACS;AACsB;;AAElB;AACa;;AAEA;;AAE1D;AACf;AACA;AACA,aAAa,kBAAkB;AAC/B,aAAa,kBAAkB;AAC/B;AACA;AACA,cAAc,wCAAM;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iCAAiC,6EAAiB;AAClD,iCAAiC,6EAAiB,EAAE,wFAAwF;AAC5I;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,oBAAoB;AACjC,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,0DAAU;AACzC;AACA,OAAO;AACP,oCAAoC,0DAAU;AAC9C;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,oBAAoB;AACjC,aAAa,YAAY;AACzB,eAAe;AACf;AACA;AACA;AACA;AACA,sBAAsB,wEAAqB;AAC3C,QAAQ,8FAAqC;AAC7C,gBAAgB,wEAAqB;AACrC,gBAAgB,0FAAiC;AACjD,SAAS;AACT;AACA;AACA;;AAEA;AACA,iCAAiC,0DAAU;AAC3C,wBAAwB,0DAAU;AAClC;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA,eAAe,oBAAoB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,eAAe,oBAAoB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;;AAEA,mBAAmB,sCAAsC;AACzD;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;;AAEA;AACA,kCAAkC,2DAAW;AAC7C;AACA;AACA,KAAK;;AAEL;;AAEA;AACA,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,2DAAW;AACxD;AACA;AACA,KAAK;;AAEL;;AAEA;AACA,oBAAoB,wEAAqB,oCAAoC,uBAAuB;AACpG,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB,oCAAoC,uBAAuB;AAC9F,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD,iCAAiC;AACpF;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,qEAAqE,SAAS,wBAAwB,EAAE;AACxG;;AAEA;AACA;AACA,eAAe;AACf,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,YAAY;AACzB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,eAAe,QAAQ;AACvB;AACA;AACA,oDAAoD;;AAEpD,oCAAoC,8DAAc;AAClD;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,eAAe;AAC5B,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA,oBAAoB,wEAAqB,uCAAuC,0BAA0B;AAC1G,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB,uCAAuC,0BAA0B;AACpG,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,eAAe;AAC5B,aAAa,MAAM;AACnB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB,4BAA4B;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,eAAe;AAC5B,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,YAAY;AACzB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,qBAAqB,+BAA+B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,sBAAsB,KAAK,SAAS;AACvE;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA,WAAW,cAAc;;AAEzB;AACA,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,uBAAuB;AACpC,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mFAAwB;AACjC,SAAS,kFAAuB;AAChC,SAAS,kFAAuB;AAChC,SAAS,2FAAgC;AACzC,SAAS,8FAAmC;AAC5C,SAAS,4FAAiC;AAC1C,SAAS,4FAAiC;AAC1C,SAAS,gFAAqB;AAC9B,SAAS,mFAAwB;AACjC,OAAO;AACP;AACA,SAAS,mFAAwB;AACjC,SAAS,kFAAuB;AAChC,SAAS,kFAAuB;AAChC,SAAS,2FAAgC;AACzC,SAAS,8FAAmC;AAC5C,SAAS,4FAAiC;AAC1C,SAAS,4FAAiC;AAC1C,SAAS,gFAAqB;AAC9B,SAAS,mFAAwB;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iCAAiC,0EAA0B;;AAE3D;AACA,qCAAqC,2EAA2B;AAChE;;AAEA;AACA;AACA,mBAAmB,0EAA0B;AAC7C;;AAEA;AACA,kDAAkD,2EAA2B;AAC7E;AACA,KAAK;;AAEL,2EAA2E,8EAA8B;;AAEzG;AACA,uCAAuC,8EAA8B;AACrE;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACtgC6D;;AAEc;;AAE5D,oCAAoC,qEAAa;AAChE;AACA;AACA;AACA;;AAEA;AACA,WAAW,8EAAkB;AAC7B;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACjByD;;AAE1C,iCAAiC,mEAAW;AAC3D;AACA;AACA,aAAa,uBAAuB;AACpC,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,uCAAuC;AACvC;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACbwD;AACsB;;AAE/D;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,yCAAyC,eAAe;AACxD;AACA;AACA,8BAA8B;AAC9B;AACA,KAAK;AACL,6CAA6C,gBAAgB;AAC7D;AACA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB,gCAAgC,kBAAkB;AAC3F,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB,gCAAgC,kBAAkB;AACrF,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;AChImC;AACC;;AAErB;AACf;AACA,cAAc,wCAAM;AACpB;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA,iCAAiC,oDAAK;AACtC;;AAEA;AACA,eAAe;AACf;AACA;AACA,iCAAiC,oDAAK;AACtC;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC9DmE;;AAEN;;AAE9C,gCAAgC,qEAAa;AAC5D;AACA,WAAW,0EAAc;AACzB;AACA;;;;;;;;;;;;;;;;;ACRyD;;AAE1C,6BAA6B,mEAAW;AACvD;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,uCAAuC;AACvC;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACbwD;AACA;;AAExD;AACA;;AAEe;AACf;AACA;AACA,eAAe;AACf,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;;AAEA,IAAI,oEAAiB;AACrB,gCAAgC,6BAA6B;AAC7D,0BAA0B,wEAAqB;;AAE/C,yCAAyC;AACzC;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AClDe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA;AACA;AACA;AACA,KAAK;AACL,wBAAwB;;AAExB,kCAAkC;AAClC;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA,eAAe,qBAAqB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC/IsD;;AAEvC;AACf;AACA;AACA;;AAEA;AACA,yBAAyB,wEAAqB;AAC9C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4CAA4C,+DAAY;AACxD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,wEAAqB;AACvC,2FAA2F;AAC3F,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oJAAoJ;AACpJ;;AAEA;AACA;AACA,sEAAsE,wEAAqB;;AAE3F,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA,uBAAuB,+EAA4B;AACnD;AACA,KAAK;AACL;AACA;AACA;;;;;;;;;;;;;;;;;ACvEoC;;AAErB;AACf,gBAAgB,wDAAwD,KAAK;AAC7E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA,wDAAwD,oDAAK,gBAAgB,oDAAK;AAClF;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA,yBAAyB,oDAAK;AAC9B;AACA;AACA;AACA,KAAK;;AAEL,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,gBAAgB;AAC7B,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,oEAAqB;AAC5D,KAAK;AACL;AACA;;;;;;;;;;;;;;;;;;;;;;AC7IwD;AACsB;AACA;;AAE3C;AACU;;AAE9B;AACf;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA,0BAA0B,wCAAM;AAChC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wCAAwC,0DAAQ;AAChD;AACA,OAAO;AACP,4BAA4B,0DAAQ;AACpC;AACA,KAAK;AACL,0BAA0B,0DAAQ;AAClC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB,0DAAQ;AAChC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,iGAAsC;AACjD;;AAEA;AACA,WAAW,kGAAuC;AAClD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC,MAAM,8FAAqC;AAC3C,cAAc,wEAAqB;AACnC,cAAc,0FAAiC;AAC/C,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAyC,0EAAwB;;AAEjE,iDAAiD,4DAA4D;AAC7G;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC9K4D;;AAE7C;AACf,gBAAgB,6EAA6E,KAAK;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,WAAW,2CAA2C;AACtD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,UAAU,6BAA6B;AACvC,qBAAqB,sFAA2B;AAChD;AACA,iBAAiB,WAAW,GAAG,UAAU;AACzC;AACA,OAAO;AACP,KAAK,uBAAuB,sFAA2B;AACvD;AACA,iBAAiB,UAAU,GAAG,WAAW;AACzC;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,UAAU;AACzB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,UAAU;AACvB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACzIA;;AAEe;AACf;AACA;AACA,uDAAuD,IAAI;AAC3D,0EAA0E,YAAY;;AAEtF;AACA,mBAAmB,IAAI,IAAI,yBAAyB;AACpD,OAAO;AACP;AACA;;AAEA;AACA,mCAAmC,qBAAqB;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,SAAS,GAAG,cAAc;AAClE;AACA;;;;;;;;;;;;;;;;AC/BA;;AAEe;AACf;AACA,mCAAmC,oBAAoB;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,SAAS;AAC/C;AACA;;;;;;;;;;;;;;;;ACnBA;;AAEe;AACf;AACA,mDAAmD,2BAA2B;AAC9E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,SAAS;AAC/C;AACA;;;;;;;;;;;;;;;;;ACnBA;AACqC;;AAErC;;AAEe,4BAA4B,sDAAI;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACvBA;AACqD;;AAErD;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,0BAA0B,6DAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B,eAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,0BAA0B;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACrGA;AAC2C;AAC3C;;AAEA;AACA;AACA;AACe;AACf;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA,+GAA+G,MAAM,IAAI,OAAO;AAChI;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA,0BAA0B,yDAAO;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA,MAAM;AACN,aAAa,OAAO;AACpB,UAAU,QAAQ;AAClB;AACA;AACA,eAAe,OAAO;AACtB;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mDAAmD,UAAU,mCAAmC,aAAa;AAC7G;AACA;;AAEA;AACA;AACA;AACA,WAAW,2BAA2B;AACtC;AACA;AACA;AACA,eAAe;AACf;AACA,iDAAiD;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC/KA;AACkD;;AAElD;AACA;AACA;AACe;AACf;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0BAA0B,uDAAiB;AAC3C,wBAAwB,uDAAiB;AACzC;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA,MAAM;AACN,eAAe,OAAO;AACtB;AACA;AACA;AACA,mDAAmD,aAAa;AAChE;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA,MAAM;AACN,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC5EA;;AAEe;AACf;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC9CA;AACiE;;AAElD;AACf;AACA;AACA,WAAW,KAAiC,GAAG,2CAAU,GAAG,CAAE;AAC9D;;AAEA;AACA,WAAW,6CAAO;AAClB;;AAEA;AACA,WAAW,6CAAU;AACrB;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,kBAAkB;AACxC,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,cAAc;AAC3B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACpGyD;AACqB;;AAE/D;AACf;AACA;AACA,eAAe,WAAW;AAC1B,eAAe,OAAO;AACtB,iBAAiB,UAAU;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,sCAAsC,+FAAyC;AAC/E;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,QAAQ,8FAAqC;AAC7C;AACA,iEAAiE,iGAAwC,GAAG,0FAAiC;AAC7I,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,eAAe;AAC5B,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA,sBAAsB,wBAAwB;AAC9C;;AAEA;;AAEA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA,0BAA0B,SAAS,GAAG,KAAK,GAAG,KAAK;;AAEnD;AACA;AACA;;AAEA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;AClFe;AACf;AACA;AACA,aAAa,WAAW;AACxB,aAAa,OAAO;AACpB,eAAe,UAAU;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,OAAO;AACpB,eAAe,UAAU;AACzB;AACA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA,wBAAwB,SAAS,GAAG,MAAM;AAC1C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,UAAU;AACzB;AACA;AACA;;AAEA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,oBAAoB;AACvC;AACA,mEAAmE;AACnE;AACA,OAAO,yBAAyB;AAChC;AACA;AACA,OAAO,gDAAgD;AACvD;AACA,OAAO,iDAAiD;AACxD;AACA,OAAO,OAAO;AACd;AACA,oCAAoC;AACpC;AACA;AACA,SAAS,OAAO;AAChB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA,sBAAsB,OAAO,GAAG,UAAU;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,oBAAoB;AACpB;AACA;AACA;;;;;;;;;;;;;;;;;;;AC7JyD;AACqB;AAC9E;;AAEe;AACf;AACA;AACA,OAAO,wKAAwK;AAC/K,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ,8FAAqC;AAC7C;AACA,gBAAgB,0FAAiC;AACjD,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA,2CAA2C,YAAY,GAAG,cAAc;;AAExE;AACA;AACA;;AAEA,uBAAuB,uFAAiC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,+BAA+B;;AAE/B,wEAAwE,mDAAmD;AAC3H,kCAAkC;;AAElC,YAAY;AACZ;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB,uFAAiC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,+BAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,uFAAiC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,+BAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;;;;;;;;;;;;;;;AC5Ge;AACf;AACA;AACA;;AAEA,mBAAmB,wBAAwB;AAC3C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC1Be;AACf;AACA;AACA;;AAEA,kCAAkC;;AAElC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AChD6D;AACU;;AAEJ;AACG;AACmB;AACN;AACjB;AACQ;AACC;;AAE3B;;AAEK;;AAErD;AACA;AACA;AACA,iBAAiB,gEAAU,EAAE,qEAAe,EAAE,qEAAc,EAAE,mEAAY,EAAE,+EAAuB,EAAE,4EAAoB,EAAE,mEAAa,EAAE,uEAAgB,EAAE,wEAAgB;AAC5K,iBAAiB,yDAAI;AACrB;;AAEA,iEAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA,aAAa,gBAAgB;AAC7B,aAAa,OAAO;AACpB,cAAc,cAAc;AAC5B;AACA;AACA,eAAe,8DAAa;AAC5B,GAAG;AACH;AACA;AACA,aAAa,kCAAkC;AAC/C,8BAA8B,gBAAgB;AAC9C,mCAAmC,OAAO;AAC1C,cAAc,gBAAgB;AAC9B;AACA;AACA,iCAAiC,8DAAa;AAC9C,GAAG;AACH;AACA;AACA,cAAc,gBAAgB;AAC9B;AACA;AACA;AACA;AACA,6CAA6C,8DAAa;AAC1D;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClC6B;AACiC;AACV;;AAErD,iEAAe;AACf;AACA;AACA,kBAAkB,wEAAY;AAC9B,gBAAgB,gEAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AC/H6B;;AAEiD;;AAEvB;;AAExD,iEAAe;AACf;AACA;AACA,yBAAyB,iFAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACT6B;AAC6B;AACA;;AAEV;AACI;;AAErD,iEAAe;AACf;AACA;AACA,WAAW,sEAAU;AACrB,aAAa,mEAAO;AACpB,eAAe,qEAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,UAAU,gFAA0B;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrPD,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3C6E;;AAElC;;AAEQ;AACV;AACc;AACE;AACG;AACG;;AAEN;;AAER;;AAElD,iEAAe;AACf;AACA;AACA,cAAc,uDAAQ;AACtB,gBAAgB,qEAAU;AAC1B,iBAAiB,uEAAW;AAC5B,kBAAkB,yEAAY;AAC9B,qBAAqB,8DAAe;AACpC,kBAAkB,mEAAY;AAC9B,gBAAgB,iEAAU;AAC1B,mBAAmB,4DAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,wDAAS;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,wDAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,MAAM,iGAAwC;AAC9C,+BAA+B,wDAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA,gCAAgC,wDAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1N6C;;AAE9C,iEAAe;AACf;AACA;AACA,aAAa,4DAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvDD,iEAAe;AACf;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbD,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;ACzDD,iEAAe;AACf;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACmCoB;AACY;;AAEjC;AACA,4CAAO,CAAC,sDAAK;;AAEb,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRuD;AACiB;;AAEnB;AACJ;AACC;AACL;;AAE9C,iEAAe;AACf;AACA;AACA,kBAAkB,mEAAY;AAC9B,gBAAgB,iEAAU;AAC1B,gBAAgB,kEAAU;AAC1B,aAAa,4DAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,4FAAkC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpQiD;;AAE4B;;AAE9E,iEAAe;AACf;AACA;AACA,eAAe,kEAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iGAAwC;AAC9C;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC8BuD;;AAExD,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzLgE;AACT;;;AAGxD,iEAAe;AACf;AACA;AACA,qBAAqB,uEAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzBuD;AACiB;;AAEzE,iEAAe;AACf;AACA;AACA,uBAAuB,6EAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1IgE;;AAEjE,iEAAe;AACf;AACA;AACA,qBAAqB,uEAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBuD;;AAExD,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5EgE;;AAEjE,iEAAe;AACf;AACA;AACA,qBAAqB,uEAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CwE;AACX;;AAE9D,iEAAe;AACf;AACA;AACA,uBAAuB,6EAAiB;AACxC,kBAAkB,uEAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtCuD;;AAExD,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACIuD;AACN;AACJ;AAC9C,iEAAe;AACf;AACA;AACA,gBAAgB,iEAAU;AAC1B,aAAa,4DAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnEuD;AACN;;AAEuB;;AAER;;AAEO;AACR;;AAEe;AACE;AACF;;AAElC;;AAE7C,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAU;AAC1B,qBAAqB,uEAAe;AACpC,iBAAiB,kFAAW;AAC5B,mBAAmB,wEAAa;AAChC,0BAA0B,gFAAoB;AAC9C,2BAA2B,iFAAqB;AAChD,0BAA0B,gFAAoB;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,0GAAgD;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4EAA4E,6EAAqB;AACjG;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7ViF;AAC1B;;AAExD,iEAAe;AACf;AACA;AACA,2BAA2B,kFAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClCuD;AACS;;AAEjE,iEAAe;AACf;AACA;AACA,qBAAqB,uEAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BuD;AACa;;AAEZ;AACc;AAC7B;AACI;;;AAG9C,iEAAe;AACf;AACA;AACA,WAAW,0DAAK;AAChB,aAAa,4DAAO;AACpB,sBAAsB,4EAAgB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kFAA4B;;AAEjD;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iFAAuB;AACnD;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B,iFAAuB;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,2BAA2B,iFAAuB;;AAElD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B,iFAAuB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iFAAuB;AACnD;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxS6C;AACU;;AAExD,iEAAe;AACf;AACA;AACA,aAAa,4DAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACS2C;AACI;AACS;AACE;;AAEX;AACa;;AAEf;AACA;;AAEI;;AAEJ;;AAEU;;AAEI;AAC0B;;AAEtF,iEAAe;AACf;AACA;AACA,aAAa,8DAAO;AACpB,eAAe,gEAAS;AACxB,mBAAmB,qEAAa;AAChC,oBAAoB,sEAAc;AAClC,eAAe,gEAAS;AACxB,qBAAqB,uEAAe;AACpC,cAAc,+DAAQ;AACtB,cAAc,+DAAQ;AACtB,gBAAgB,iEAAU;AAC1B,mBAAmB,sFAAsB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iEAAa;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,uFAA2B;AACtE;AACA;AACA,2CAA2C,uFAA2B;AACtE;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClKuD;;AAExD,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/BuD;AACxD,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzB6B;AACuC;AACa;;AAEtB;AACa;;AAEzE,iEAAe;AACf;AACA;AACA,oBAAoB,4EAAc;AAClC,0BAA0B,mFAAoB;AAC9C,sBAAsB,8EAAgB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0DAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sFAA2B;AACnD;AACA;AACA;AACA,wBAAwB,sFAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sFAA2B;AACrE;AACA;AACA;AACA,0CAA0C,sFAA2B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChO6B;AACgB;;AAEU;AACI;;AAE5D,iEAAe;AACf;AACA;AACA,aAAa,4DAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sFAA2B;AACnD;AACA;AACA;AACA;AACA,wBAAwB,sFAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,0DAAY;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzJ6B;AAC2C;AACe;;AAEnC;;AAErD,iEAAe;AACf;AACA;AACA,sBAAsB,8EAAgB;AACtC,gBAAgB,gEAAU;AAC1B,6BAA6B,sFAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/I6B;;AAEsD;;AAE5B;;AAExD,iEAAe;AACf;AACA;AACA,4BAA4B,qFAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;ACjDoG;AAC3B;AACL;AACrE,CAAmF;;;AAGnF;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,yFAAM;AACR,EAAE,8FAAM;AACR,EAAE,uGAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvC4E;AAC3B;AACL;AAC3D,CAAyE;;;AAGzE;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,+EAAM;AACR,EAAE,oFAAM;AACR,EAAE,6FAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvC6E;AAC3B;AACL;AAC5D,CAA0E;;;AAG1E;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,gFAAM;AACR,EAAE,qFAAM;AACR,EAAE,8FAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvC2E;AAC3B;AACL;AAC1D,CAAwE;;;AAGxE;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,8EAAM;AACR,EAAE,mFAAM;AACR,EAAE,4FAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCmE;AAC3B;AACL;AAClD,CAAgE;;;AAGhE;AAC0F;AAC1F,gBAAgB,oGAAU;AAC1B,EAAE,sEAAM;AACR,EAAE,2EAAM;AACR,EAAE,oFAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvC2E;AAC3B;AACL;AAC1D,CAAwE;;;AAGxE;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,8EAAM;AACR,EAAE,mFAAM;AACR,EAAE,4FAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;ACvCqE;AAC3B;AACL;;;AAGpD;AACA,CAA6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,wEAAM;AACR,EAAE,6EAAM;AACR,EAAE,sFAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACtCuE;AAC3B;AACL;AACtD,CAAoE;;;AAGpE;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,0EAAM;AACR,EAAE,+EAAM;AACR,EAAE,wFAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCuE;AAC3B;AACL;AACtD,CAAoE;;;AAGpE;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,0EAAM;AACR,EAAE,+EAAM;AACR,EAAE,wFAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvC8E;AAC3B;AACL;AAC7D,CAA2E;;;AAG3E;AAC0F;AAC1F,gBAAgB,oGAAU;AAC1B,EAAE,iFAAM;AACR,EAAE,sFAAM;AACR,EAAE,+FAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCyE;AAC3B;AACL;AACxD,CAAsE;;;AAGtE;AAC0F;AAC1F,gBAAgB,oGAAU;AAC1B,EAAE,4EAAM;AACR,EAAE,iFAAM;AACR,EAAE,0FAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCgF;AAC3B;AACL;AAC/D,CAA6E;;;AAG7E;AAC0F;AAC1F,gBAAgB,oGAAU;AAC1B,EAAE,mFAAM;AACR,EAAE,wFAAM;AACR,EAAE,iGAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCiF;AAC3B;AACL;AAChE,CAA8E;;;AAG9E;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,oFAAM;AACR,EAAE,yFAAM;AACR,EAAE,kGAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvC6E;AAC3B;AACL;AAC5D,CAA0E;;;AAG1E;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,gFAAM;AACR,EAAE,qFAAM;AACR,EAAE,8FAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCwF;AAC3B;AACL;AACvE,CAAqF;;;AAGrF;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,2FAAM;AACR,EAAE,gGAAM;AACR,EAAE,yGAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCuF;AAC3B;AACL;AACtE,CAAoF;;;AAGpF;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,0FAAM;AACR,EAAE,+FAAM;AACR,EAAE,wGAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCkF;AAC3B;AACL;AACjE,CAA+E;;;AAG/E;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,qFAAM;AACR,EAAE,0FAAM;AACR,EAAE,mGAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;ACvCsF;AAC3B;AACL;;;AAGrE;AACA,CAA6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,yFAAM;AACR,EAAE,8FAAM;AACR,EAAE,uGAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;ACtC8E;AAC3B;AACL;;;AAG7D;AACA,CAA6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,iFAAM;AACR,EAAE,sFAAM;AACR,EAAE,+FAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACtC6E;AAC3B;AACL;AAC5D,CAA0E;;;AAG1E;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,gFAAM;AACR,EAAE,qFAAM;AACR,EAAE,8FAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCmF;AAC3B;AACL;AAClE,CAAgF;;;AAGhF;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,sFAAM;AACR,EAAE,2FAAM;AACR,EAAE,oGAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCwF;AAC3B;AACL;AACvE,CAAqF;;;AAGrF;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,2FAAM;AACR,EAAE,gGAAM;AACR,EAAE,yGAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvC2E;AAC3B;AACL;AAC1D,CAAwE;;;AAGxE;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,8EAAM;AACR,EAAE,mFAAM;AACR,EAAE,4FAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCsF;AAC3B;AACL;AACrE,CAAmF;;;AAGnF;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,yFAAM;AACR,EAAE,8FAAM;AACR,EAAE,uGAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCmF;AAC3B;AACL;AAClE,CAAgF;;;AAGhF;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,sFAAM;AACR,EAAE,2FAAM;AACR,EAAE,oGAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCyF;AAC3B;AACL;AACxE,CAAsF;;;AAGtF;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,4FAAM;AACR,EAAE,iGAAM;AACR,EAAE,0GAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCuF;AAC3B;AACL;AACtE,CAAoF;;;AAGpF;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,0FAAM;AACR,EAAE,+FAAM;AACR,EAAE,wGAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvC0F;AAC3B;AACL;AACzE,CAAuF;;;AAGvF;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,6FAAM;AACR,EAAE,kGAAM;AACR,EAAE,2GAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCkF;AAC3B;AACL;AACjE,CAA+E;;;AAG/E;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,qFAAM;AACR,EAAE,0FAAM;AACR,EAAE,mGAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCkF;AAC3B;AACL;AACjE,CAA+E;;;AAG/E;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,qFAAM;AACR,EAAE,0FAAM;AACR,EAAE,mGAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCgF;AAC3B;AACL;AAC/D,CAA6E;;;AAG7E;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,mFAAM;AACR,EAAE,wFAAM;AACR,EAAE,iGAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvCyF;AAC3B;AACL;AACxE,CAAsF;;;AAGtF;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,4FAAM;AACR,EAAE,iGAAM;AACR,EAAE,0GAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;ACvC6E;AAC3B;AACL;AAC5D,CAA0E;;;AAG1E;AAC6F;AAC7F,gBAAgB,oGAAU;AAC1B,EAAE,gFAAM;AACR,EAAE,qFAAM;AACR,EAAE,8FAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACA,iEAAe,iB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvCiL,CAAC,iEAAe,4LAAG,EAAC,C;;;;;;;;;;;;;;;;ACA9B,CAAC,iEAAe,kLAAG,EAAC,C;;;;;;;;;;;;;;;;ACAnB,CAAC,iEAAe,mLAAG,EAAC,C;;;;;;;;;;;;;;;;ACAtB,CAAC,iEAAe,iLAAG,EAAC,C;;;;;;;;;;;;;;;;ACAlC,CAAC,iEAAe,yKAAG,EAAC,C;;;;;;;;;;;;;;;;ACAN,CAAC,iEAAe,iLAAG,EAAC,C;;;;;;;;;;;;;;;;ACA1B,CAAC,iEAAe,2KAAG,EAAC,C;;;;;;;;;;;;;;;;ACAlB,CAAC,iEAAe,6KAAG,EAAC,C;;;;;;;;;;;;;;;;ACApB,CAAC,iEAAe,6KAAG,EAAC,C;;;;;;;;;;;;;;;;ACAnB,CAAC,iEAAe,oLAAG,EAAC,C;;;;;;;;;;;;;;;;ACAzB,CAAC,iEAAe,+KAAG,EAAC,C;;;;;;;;;;;;;;;;ACAb,CAAC,iEAAe,sLAAG,EAAC,C;;;;;;;;;;;;;;;;ACAb,CAAC,iEAAe,uLAAG,EAAC,C;;;;;;;;;;;;;;;;ACAxB,CAAC,iEAAe,mLAAG,EAAC,C;;;;;;;;;;;;;;;;ACAT,CAAC,iEAAe,8LAAG,EAAC,C;;;;;;;;;;;;;;;;ACArB,CAAC,iEAAe,6LAAG,EAAC,C;;;;;;;;;;;;;;;;ACAzB,CAAC,iEAAe,wLAAG,EAAC,C;;;;;;;;;;;;;;;;ACAhB,CAAC,iEAAe,4LAAG,EAAC,C;;;;;;;;;;;;;;;;ACA5B,CAAC,iEAAe,oLAAG,EAAC,C;;;;;;;;;;;;;;;;ACArB,CAAC,iEAAe,mLAAG,EAAC,C;;;;;;;;;;;;;;;;ACAd,CAAC,iEAAe,yLAAG,EAAC,C;;;;;;;;;;;;;;;;ACAf,CAAC,iEAAe,8LAAG,EAAC,C;;;;;;;;;;;;;;;;ACAjC,CAAC,iEAAe,iLAAG,EAAC,C;;;;;;;;;;;;;;;;ACAT,CAAC,iEAAe,4LAAG,EAAC,C;;;;;;;;;;;;;;;;ACAvB,CAAC,iEAAe,yLAAG,EAAC,C;;;;;;;;;;;;;;;;ACAd,CAAC,iEAAe,+LAAG,EAAC,C;;;;;;;;;;;;;;;;ACAtB,CAAC,iEAAe,6LAAG,EAAC,C;;;;;;;;;;;;;;;;ACAjB,CAAC,iEAAe,gMAAG,EAAC,C;;;;;;;;;;;;;;;;ACA5B,CAAC,iEAAe,wLAAG,EAAC,C;;;;;;;;;;;;;;;;ACApB,CAAC,iEAAe,wLAAG,EAAC,C;;;;;;;;;;;;;;;;ACAtB,CAAC,iEAAe,sLAAG,EAAC,C;;;;;;;;;;;;;;;;ACAX,CAAC,iEAAe,+LAAG,EAAC,C;;;;;;;;;;;;;;;;ACAhC,CAAC,iEAAe,mLAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA3M;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,yEAAyE;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iBAAiB;AACjB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,qDAAqD;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,6DAA6D;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrEA;AACA;AACA;AACA;AACA,2BAA2B,SAAS,yBAAyB,EAAE;AAC/D,eAAe,qCAAqC;AACpD,iBAAiB,wCAAwC;AACzD,mBAAmB,0CAA0C;AAC7D;AACA;AACA,aAAa,uCAAuC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,qCAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uCAAuC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,kCAAkC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0CAA0C;AAChE,kBAAkB,8CAA8C;AAChE,mBAAmB,SAAS,4BAA4B,EAAE;AAC1D;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,0DAA0D;AAC/D;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,qCAAqC;AACnE,2BAA2B;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,wBAAwB;AACtD,2BAA2B;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,qBAAqB;AACrB;AACA;AACA;AACA,yBAAyB,sDAAsD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,iCAAiC;AACjC,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sCAAsC;AAC5D;AACA;AACA,gBAAgB;AAChB,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrMA;AACA;AACA;AACA;AACA,oBAAoB,SAAS,2BAA2B,EAAE;AAC1D;AACA;AACA;AACA;AACA,gBAAgB;AAChB,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,WAAW;AACX;AACA;AACA;AACA;AACA,mBAAmB,sDAAsD;AACzE;AACA;AACA,aAAa,6DAA6D;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,0BAA0B,mCAAmC;AAC7D,uBAAuB;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,0BAA0B,yCAAyC;AACnE,uBAAuB;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,mBAAmB;AACnB,uBAAuB;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,mBAAmB;AACnB,uBAAuB;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,8DAA8D;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,uBAAuB;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,uBAAuB;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,0CAA0C,MAAM,0BAA0B,EAAE;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,uBAAuB;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB,sDAAsD;AAC3E;AACA;AACA;AACA;AACA,gCAAgC,yCAAyC;AACzE,6BAA6B;AAC7B,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,uBAAuB;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,uBAAuB;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,uBAAuB;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,qCAAqC;AAC/D,uBAAuB;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC1XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yCAAyC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,mBAAmB,6BAA6B,oBAAoB,EAAE;AACtE;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uDAAuD;AAC7E,yBAAyB,sBAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,yBAAyB,sBAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mCAAmC;AAC7D;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,6BAA6B,SAAS,kBAAkB,EAAE;AAC1D;AACA;AACA;AACA,mCAAmC;AACnC,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,qBAAqB,SAAS,uCAAuC,EAAE;AACvE;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,2BAA2B,6BAA6B,oBAAoB,EAAE;AAC9E;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,uBAAuB,wDAAwD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,qCAAqC,uBAAuB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACzWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA,iBAAiB,qDAAqD;AACtE;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,eAAe;AACf,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB,qDAAqD;AACtE;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uDAAuD;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,yDAAyD;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,wDAAwD;AAC7D;AACA;AACA;AACA,SAAS,iEAAiE;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,mBAAmB;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,mBAAmB;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,mBAAmB;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oBAAoB,eAAe;AACnC,iBAAiB;AACjB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAA+C;AACrE;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,2BAA2B;AAC3C;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qBAAqB;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA,oBAAoB,oDAAoD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,WAAW,gEAAgE;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qBAAqB;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oDAAoD;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,0DAA0D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,OAAO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS,sEAAsE;AAC/E;AACA;AACA;AACA,aAAa,gEAAgE;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+BAA+B;AACnD,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mBAAmB;AACzC,mBAAmB;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA;AACA,SAAS,qEAAqE;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mBAAmB;AACzC,mBAAmB;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAA+C;AACrE,mBAAmB;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iDAAiD;AACvE,mBAAmB;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,yBAAyB,kBAAkB;AAC3C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,aAAa;AACb,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,aAAa;AACb,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iBAAiB;AACjB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS,8DAA8D;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,4BAA4B;AAC5B,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qBAAqB;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,2BAA2B;AAC3B,qBAAqB;AACrB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,2BAA2B;AAC3B,qBAAqB;AACrB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+CAA+C;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,eAAe;AACf;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,iCAAiC;AACjC,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,qCAAqC;AACnE,2BAA2B;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AChWA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,8DAA8D;AACnE;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC7RA;AACA;AACA;AACA;AACA,oBAAoB,wDAAwD;AAC5E;AACA;AACA,OAAO,iEAAiE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iBAAiB;AACjB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iBAAiB;AACjB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+BAA+B;AAC/C,mBAAmB,wBAAwB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,wEAAwE;AAC7E;AACA;AACA,aAAa;AACb,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iBAAiB;AACjB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,yBAAyB;AACzB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,yBAAyB;AACzB,mBAAmB;AACnB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClBA;AACA;AACA;AACA,iBAAiB,8BAA8B;;AAE/C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oCAAoC,4BAA4B;AAChE;AACA,aAAa;AACb,wCAAwC,OAAO,icAAic;AAChf;AACA;AACA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA,iBAAiB,8BAA8B;;AAE/C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oCAAoC,4FAA4F;AAChI;AACA,aAAa;AACb,wCAAwC,OAAO,qFAAqF;AACpI;AACA;AACA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA,iBAAiB,8BAA8B;;AAE/C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oCAAoC,sGAAsG;AAC1I;AACA,aAAa;AACb,wCAAwC,OAAO,0mBAA0mB;AACzpB;AACA;AACA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA,iBAAiB,8BAA8B;;AAE/C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oCAAoC,sGAAsG;AAC1I;AACA,aAAa;AACb,wCAAwC,OAAO,8nBAA8nB;AAC7qB;AACA;AACA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA,iBAAiB,8BAA8B;;AAE/C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oCAAoC,mEAAmE;AACvG;AACA,aAAa;AACb,wCAAwC,OAAO,01BAA01B;AACz4B;AACA;AACA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA,iBAAiB,8BAA8B;;AAE/C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oCAAoC,mEAAmE;AACvG;AACA,aAAa;AACb,wCAAwC,OAAO,q1BAAq1B;AACp4B;AACA;AACA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA,iBAAiB,8BAA8B;;AAE/C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oCAAoC,2DAA2D;AAC/F;AACA,aAAa;AACb,wCAAwC,OAAO,yVAAyV;AACxY;AACA;AACA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA,iBAAiB,8BAA8B;;AAE/C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oCAAoC,+FAA+F;AACnI;AACA,aAAa;AACb,wCAAwC,OAAO,ofAAof;AACniB;AACA;AACA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA,iBAAiB,8BAA8B;;AAE/C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oCAAoC,qGAAqG;AACzI;AACA,aAAa;AACb,wCAAwC,OAAO,kjBAAkjB;AACjmB;AACA;AACA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA,iBAAiB,8BAA8B;;AAE/C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oCAAoC,+FAA+F;AACnI;AACA,aAAa;AACb,wCAAwC,OAAO,0fAA0f;AACziB;AACA;AACA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA,iBAAiB,8BAA8B;;AAE/C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oCAAoC,sGAAsG;AAC1I;AACA,aAAa;AACb,wCAAwC,OAAO,8nBAA8nB,aAAa,OAAO,wLAAwL;AACz3B;AACA;AACA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA,iBAAiB,8BAA8B;;AAE/C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oCAAoC,mEAAmE;AACvG;AACA,aAAa;AACb,wCAAwC,OAAO,kyBAAkyB;AACj1B;AACA;AACA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA,iBAAiB,8BAA8B;;AAE/C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oCAAoC,4FAA4F;AAChI;AACA,aAAa;AACb,wCAAwC,OAAO,qEAAqE;AACpH;AACA;AACA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA,iBAAiB,8BAA8B;;AAE/C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oCAAoC,sGAAsG;AAC1I;AACA,aAAa;AACb,wCAAwC,OAAO,kmBAAkmB;AACjpB;AACA;AACA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA,iBAAiB,8BAA8B;;AAE/C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oCAAoC,2DAA2D;AAC/F;AACA,aAAa;AACb,wCAAwC,OAAO,mJAAmJ,aAAa,OAAO,oJAAoJ;AAC1W;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UC1BA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,gCAAgC,YAAY;WAC5C;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA,wCAAwC,yCAAyC;WACjF;WACA;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA,CAAC,I;;;;;WCPD,wF;;;;;WCAA;WACA;WACA;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;;;;;;;;;;;;;;;;ACNuC;AACwB;;AAI9D","file":"alpheios-alignment-editor.js","sourcesContent":["// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ErrorKind = void 0;\nvar ErrorKind;\n(function (ErrorKind) {\n /** Argument is unclosed (e.g. `{0`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n /** Argument is empty (e.g. `{}`). */\n ErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n /** Argument is malformed (e.g. `{foo!}``) */\n ErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n /** Expect an argument type (e.g. `{foo,}`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n /** Unsupported argument type (e.g. `{foo,foo}`) */\n ErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n /** Expect an argument style (e.g. `{foo, number, }`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n /** The number skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n /** The date time skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n /** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n /** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n /** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n ErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n /** Missing select argument options (e.g. `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n /** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n /** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n /** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n /**\n * Expecting a message fragment after the `plural` or `selectordinal` selector\n * (e.g. `{foo, plural, one}`)\n */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n /** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n /**\n * Duplicate selectors in `plural` or `selectordinal` argument.\n * (e.g. {foo, plural, one {#} one {#}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n /** Duplicate selectors in `select` argument.\n * (e.g. {foo, select, apple {apple} apple {apple}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n /** Plural or select argument option must have `other` clause. */\n ErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n /** The tag is malformed. (e.g. `foo) */\n ErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n /** The tag name is invalid. (e.g. `<123>foo123>`) */\n ErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n /** The closing tag does not match the opening tag. (e.g. `foo`) */\n ErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n /** The opening tag has unmatched closing tag. (e.g. `foo`) */\n ErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n})(ErrorKind = exports.ErrorKind || (exports.ErrorKind = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = void 0;\nvar tslib_1 = require(\"tslib\");\nvar error_1 = require(\"./error\");\nvar parser_1 = require(\"./parser\");\nvar types_1 = require(\"./types\");\nfunction pruneLocation(els) {\n els.forEach(function (el) {\n delete el.location;\n if (types_1.isSelectElement(el) || types_1.isPluralElement(el)) {\n for (var k in el.options) {\n delete el.options[k].location;\n pruneLocation(el.options[k].value);\n }\n }\n else if (types_1.isNumberElement(el) && types_1.isNumberSkeleton(el.style)) {\n delete el.style.location;\n }\n else if ((types_1.isDateElement(el) || types_1.isTimeElement(el)) &&\n types_1.isDateTimeSkeleton(el.style)) {\n delete el.style.location;\n }\n else if (types_1.isTagElement(el)) {\n pruneLocation(el.children);\n }\n });\n}\nfunction parse(message, opts) {\n if (opts === void 0) { opts = {}; }\n opts = tslib_1.__assign({ shouldParseSkeletons: true }, opts);\n var result = new parser_1.Parser(message, opts).parse();\n if (result.err) {\n var error = SyntaxError(error_1.ErrorKind[result.err.kind]);\n // @ts-expect-error Assign to error object\n error.location = result.err.location;\n // @ts-expect-error Assign to error object\n error.originalMessage = result.err.message;\n throw error;\n }\n if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {\n pruneLocation(result.val);\n }\n return result.val;\n}\nexports.parse = parse;\ntslib_1.__exportStar(require(\"./types\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Parser = void 0;\nvar tslib_1 = require(\"tslib\");\nvar error_1 = require(\"./error\");\nvar types_1 = require(\"./types\");\nvar regex_generated_1 = require(\"./regex.generated\");\nvar icu_skeleton_parser_1 = require(\"@formatjs/icu-skeleton-parser\");\nfunction createLocation(start, end) {\n return { start: start, end: end };\n}\n// #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\nvar hasNativeStartsWith = !!String.prototype.startsWith;\nvar hasNativeFromCodePoint = !!String.fromCodePoint;\nvar hasNativeFromEntries = !!Object.fromEntries;\nvar hasNativeCodePointAt = !!String.prototype.codePointAt;\nvar hasTrimStart = !!String.prototype.trimStart;\nvar hasTrimEnd = !!String.prototype.trimEnd;\nvar hasNativeIsSafeInteger = !!Number.isSafeInteger;\nvar isSafeInteger = hasNativeIsSafeInteger\n ? Number.isSafeInteger\n : function (n) {\n return (typeof n === 'number' &&\n isFinite(n) &&\n Math.floor(n) === n &&\n Math.abs(n) <= 0x1fffffffffffff);\n };\n// IE11 does not support y and u.\nvar REGEX_SUPPORTS_U_AND_Y = true;\ntry {\n RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n}\ncatch (_) {\n REGEX_SUPPORTS_U_AND_Y = false;\n}\nvar startsWith = hasNativeStartsWith\n ? // Native\n function startsWith(s, search, position) {\n return s.startsWith(search, position);\n }\n : // For IE11\n function startsWith(s, search, position) {\n return s.slice(position, position + search.length) === search;\n };\nvar fromCodePoint = hasNativeFromCodePoint\n ? String.fromCodePoint\n : // IE11\n function fromCodePoint() {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n var elements = '';\n var length = codePoints.length;\n var i = 0;\n var code;\n while (length > i) {\n code = codePoints[i++];\n if (code > 0x10ffff)\n throw RangeError(code + ' is not a valid code point');\n elements +=\n code < 0x10000\n ? String.fromCharCode(code)\n : String.fromCharCode(((code -= 0x10000) >> 10) + 0xd800, (code % 0x400) + 0xdc00);\n }\n return elements;\n };\nvar fromEntries = \n// native\nhasNativeFromEntries\n ? Object.fromEntries\n : // Ponyfill\n function fromEntries(entries) {\n var obj = {};\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var _a = entries_1[_i], k = _a[0], v = _a[1];\n obj[k] = v;\n }\n return obj;\n };\nvar codePointAt = hasNativeCodePointAt\n ? // Native\n function codePointAt(s, index) {\n return s.codePointAt(index);\n }\n : // IE 11\n function codePointAt(s, index) {\n var size = s.length;\n if (index < 0 || index >= size) {\n return undefined;\n }\n var first = s.charCodeAt(index);\n var second;\n return first < 0xd800 ||\n first > 0xdbff ||\n index + 1 === size ||\n (second = s.charCodeAt(index + 1)) < 0xdc00 ||\n second > 0xdfff\n ? first\n : ((first - 0xd800) << 10) + (second - 0xdc00) + 0x10000;\n };\nvar trimStart = hasTrimStart\n ? // Native\n function trimStart(s) {\n return s.trimStart();\n }\n : // Ponyfill\n function trimStart(s) {\n return s.replace(regex_generated_1.SPACE_SEPARATOR_START_REGEX, '');\n };\nvar trimEnd = hasTrimEnd\n ? // Native\n function trimEnd(s) {\n return s.trimEnd();\n }\n : // Ponyfill\n function trimEnd(s) {\n return s.replace(regex_generated_1.SPACE_SEPARATOR_END_REGEX, '');\n };\n// Prevent minifier to translate new RegExp to literal form that might cause syntax error on IE11.\nfunction RE(s, flag) {\n return new RegExp(s, flag);\n}\n// #endregion\nvar matchIdentifierAtIndex;\nif (REGEX_SUPPORTS_U_AND_Y) {\n // Native\n var IDENTIFIER_PREFIX_RE_1 = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var _a;\n IDENTIFIER_PREFIX_RE_1.lastIndex = index;\n var match = IDENTIFIER_PREFIX_RE_1.exec(s);\n return (_a = match[1]) !== null && _a !== void 0 ? _a : '';\n };\n}\nelse {\n // IE11\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var match = [];\n while (true) {\n var c = codePointAt(s, index);\n if (c === undefined || _isWhiteSpace(c) || _isPatternSyntax(c)) {\n break;\n }\n match.push(c);\n index += c >= 0x10000 ? 2 : 1;\n }\n return fromCodePoint.apply(void 0, match);\n };\n}\nvar Parser = /** @class */ (function () {\n function Parser(message, options) {\n if (options === void 0) { options = {}; }\n this.message = message;\n this.position = { offset: 0, line: 1, column: 1 };\n this.ignoreTag = !!options.ignoreTag;\n this.requiresOtherClause = !!options.requiresOtherClause;\n this.shouldParseSkeletons = !!options.shouldParseSkeletons;\n }\n Parser.prototype.parse = function () {\n if (this.offset() !== 0) {\n throw Error('parser can only be used once');\n }\n return this.parseMessage(0, '', false);\n };\n Parser.prototype.parseMessage = function (nestingLevel, parentArgType, expectingCloseTag) {\n var elements = [];\n while (!this.isEOF()) {\n var char = this.char();\n if (char === 123 /* `{` */) {\n var result = this.parseArgument(nestingLevel, expectingCloseTag);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else if (char === 125 /* `}` */ && nestingLevel > 0) {\n break;\n }\n else if (char === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) {\n var position = this.clonePosition();\n this.bump();\n elements.push({\n type: types_1.TYPE.pound,\n location: createLocation(position, this.clonePosition()),\n });\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n this.peek() === 47 // char code for '/'\n ) {\n if (expectingCloseTag) {\n break;\n }\n else {\n return this.error(error_1.ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n }\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n _isAlpha(this.peek() || 0)) {\n var result = this.parseTag(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else {\n var result = this.parseLiteral(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n }\n return { val: elements, err: null };\n };\n /**\n * A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n * [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n * are accepted:\n *\n * ```\n * tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"\" tagName (whitespace)* \">\"\n * tagName ::= [a-z] (PENChar)*\n * PENChar ::=\n * \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n * [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * ```\n *\n * [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n * NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n * since other tag-based engines like React allow it\n */\n Parser.prototype.parseTag = function (nestingLevel, parentArgType) {\n var startPosition = this.clonePosition();\n this.bump(); // `<`\n var tagName = this.parseTagName();\n this.bumpSpace();\n if (this.bumpIf('/>')) {\n // Self closing tag\n return {\n val: {\n type: types_1.TYPE.literal,\n value: \"<\" + tagName + \"/>\",\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else if (this.bumpIf('>')) {\n var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n if (childrenResult.err) {\n return childrenResult;\n }\n var children = childrenResult.val;\n // Expecting a close tag\n var endTagStartPosition = this.clonePosition();\n if (this.bumpIf('')) {\n if (this.isEOF() || !_isAlpha(this.char())) {\n return this.error(error_1.ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n var closingTagNameStartPosition = this.clonePosition();\n var closingTagName = this.parseTagName();\n if (tagName !== closingTagName) {\n return this.error(error_1.ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(closingTagNameStartPosition, this.clonePosition()));\n }\n this.bumpSpace();\n if (!this.bumpIf('>')) {\n return this.error(error_1.ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n return {\n val: {\n type: types_1.TYPE.tag,\n value: tagName,\n children: children,\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else {\n return this.error(error_1.ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n }\n }\n else {\n return this.error(error_1.ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n }\n };\n /**\n * This method assumes that the caller has peeked ahead for the first tag character.\n */\n Parser.prototype.parseTagName = function () {\n var startOffset = this.offset();\n this.bump(); // the first tag name character\n while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n this.bump();\n }\n return this.message.slice(startOffset, this.offset());\n };\n Parser.prototype.parseLiteral = function (nestingLevel, parentArgType) {\n var start = this.clonePosition();\n var value = '';\n while (true) {\n var parseQuoteResult = this.tryParseQuote(parentArgType);\n if (parseQuoteResult) {\n value += parseQuoteResult;\n continue;\n }\n var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n if (parseUnquotedResult) {\n value += parseUnquotedResult;\n continue;\n }\n var parseLeftAngleResult = this.tryParseLeftAngleBracket();\n if (parseLeftAngleResult) {\n value += parseLeftAngleResult;\n continue;\n }\n break;\n }\n var location = createLocation(start, this.clonePosition());\n return {\n val: { type: types_1.TYPE.literal, value: value, location: location },\n err: null,\n };\n };\n Parser.prototype.tryParseLeftAngleBracket = function () {\n if (!this.isEOF() &&\n this.char() === 60 /* `<` */ &&\n (this.ignoreTag ||\n // If at the opening tag or closing tag position, bail.\n !_isAlphaOrSlash(this.peek() || 0))) {\n this.bump(); // `<`\n return '<';\n }\n return null;\n };\n /**\n * Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n * a character that requires quoting (that is, \"only where needed\"), and works the same in\n * nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n */\n Parser.prototype.tryParseQuote = function (parentArgType) {\n if (this.isEOF() || this.char() !== 39 /* `'` */) {\n return null;\n }\n // Parse escaped char following the apostrophe, or early return if there is no escaped char.\n // Check if is valid escaped character\n switch (this.peek()) {\n case 39 /* `'` */:\n // double quote, should return as a single quote.\n this.bump();\n this.bump();\n return \"'\";\n // '{', '<', '>', '}'\n case 123:\n case 60:\n case 62:\n case 125:\n break;\n case 35: // '#'\n if (parentArgType === 'plural' || parentArgType === 'selectordinal') {\n break;\n }\n return null;\n default:\n return null;\n }\n this.bump(); // apostrophe\n var codePoints = [this.char()]; // escaped char\n this.bump();\n // read chars until the optional closing apostrophe is found\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch === 39 /* `'` */) {\n if (this.peek() === 39 /* `'` */) {\n codePoints.push(39);\n // Bump one more time because we need to skip 2 characters.\n this.bump();\n }\n else {\n // Optional closing apostrophe.\n this.bump();\n break;\n }\n }\n else {\n codePoints.push(ch);\n }\n this.bump();\n }\n return fromCodePoint.apply(void 0, codePoints);\n };\n Parser.prototype.tryParseUnquoted = function (nestingLevel, parentArgType) {\n if (this.isEOF()) {\n return null;\n }\n var ch = this.char();\n if (ch === 60 /* `<` */ ||\n ch === 123 /* `{` */ ||\n (ch === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) ||\n (ch === 125 /* `}` */ && nestingLevel > 0)) {\n return null;\n }\n else {\n this.bump();\n return fromCodePoint(ch);\n }\n };\n Parser.prototype.parseArgument = function (nestingLevel, expectingCloseTag) {\n var openingBracePosition = this.clonePosition();\n this.bump(); // `{`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(error_1.ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n if (this.char() === 125 /* `}` */) {\n this.bump();\n return this.error(error_1.ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n // argument name\n var value = this.parseIdentifierIfPossible().value;\n if (!value) {\n return this.error(error_1.ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(error_1.ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n switch (this.char()) {\n // Simple argument: `{name}`\n case 125 /* `}` */: {\n this.bump(); // `}`\n return {\n val: {\n type: types_1.TYPE.argument,\n // value does not include the opening and closing braces.\n value: value,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n err: null,\n };\n }\n // Argument with options: `{name, format, ...}`\n case 44 /* `,` */: {\n this.bump(); // `,`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(error_1.ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n }\n default:\n return this.error(error_1.ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n };\n /**\n * Advance the parser until the end of the identifier, if it is currently on\n * an identifier character. Return an empty string otherwise.\n */\n Parser.prototype.parseIdentifierIfPossible = function () {\n var startingPosition = this.clonePosition();\n var startOffset = this.offset();\n var value = matchIdentifierAtIndex(this.message, startOffset);\n var endOffset = startOffset + value.length;\n this.bumpTo(endOffset);\n var endPosition = this.clonePosition();\n var location = createLocation(startingPosition, endPosition);\n return { value: value, location: location };\n };\n Parser.prototype.parseArgumentOptions = function (nestingLevel, expectingCloseTag, value, openingBracePosition) {\n var _a;\n // Parse this range:\n // {name, type, style}\n // ^---^\n var typeStartPosition = this.clonePosition();\n var argType = this.parseIdentifierIfPossible().value;\n var typeEndPosition = this.clonePosition();\n switch (argType) {\n case '':\n // Expecting a style string number, date, time, plural, selectordinal, or select.\n return this.error(error_1.ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n case 'number':\n case 'date':\n case 'time': {\n // Parse this range:\n // {name, number, style}\n // ^-------^\n this.bumpSpace();\n var styleAndLocation = null;\n if (this.bumpIf(',')) {\n this.bumpSpace();\n var styleStartPosition = this.clonePosition();\n var result = this.parseSimpleArgStyleIfPossible();\n if (result.err) {\n return result;\n }\n var style = trimEnd(result.val);\n if (style.length === 0) {\n return this.error(error_1.ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var styleLocation = createLocation(styleStartPosition, this.clonePosition());\n styleAndLocation = { style: style, styleLocation: styleLocation };\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_1 = createLocation(openingBracePosition, this.clonePosition());\n // Extract style or skeleton\n if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, '::', 0)) {\n // Skeleton starts with `::`.\n var skeleton = trimStart(styleAndLocation.style.slice(2));\n if (argType === 'number') {\n var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n if (result.err) {\n return result;\n }\n return {\n val: { type: types_1.TYPE.number, value: value, location: location_1, style: result.val },\n err: null,\n };\n }\n else {\n if (skeleton.length === 0) {\n return this.error(error_1.ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);\n }\n var style = {\n type: types_1.SKELETON_TYPE.dateTime,\n pattern: skeleton,\n location: styleAndLocation.styleLocation,\n parsedOptions: this.shouldParseSkeletons\n ? icu_skeleton_parser_1.parseDateTimeSkeleton(skeleton)\n : {},\n };\n var type = argType === 'date' ? types_1.TYPE.date : types_1.TYPE.time;\n return {\n val: { type: type, value: value, location: location_1, style: style },\n err: null,\n };\n }\n }\n // Regular style or no style.\n return {\n val: {\n type: argType === 'number'\n ? types_1.TYPE.number\n : argType === 'date'\n ? types_1.TYPE.date\n : types_1.TYPE.time,\n value: value,\n location: location_1,\n style: (_a = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a !== void 0 ? _a : null,\n },\n err: null,\n };\n }\n case 'plural':\n case 'selectordinal':\n case 'select': {\n // Parse this range:\n // {name, plural, options}\n // ^---------^\n var typeEndPosition_1 = this.clonePosition();\n this.bumpSpace();\n if (!this.bumpIf(',')) {\n return this.error(error_1.ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition_1, tslib_1.__assign({}, typeEndPosition_1)));\n }\n this.bumpSpace();\n // Parse offset:\n // {name, plural, offset:1, options}\n // ^-----^\n //\n // or the first option:\n //\n // {name, plural, one {...} other {...}}\n // ^--^\n var identifierAndLocation = this.parseIdentifierIfPossible();\n var pluralOffset = 0;\n if (argType !== 'select' && identifierAndLocation.value === 'offset') {\n if (!this.bumpIf(':')) {\n return this.error(error_1.ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n this.bumpSpace();\n var result = this.tryParseDecimalInteger(error_1.ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, error_1.ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n if (result.err) {\n return result;\n }\n // Parse another identifier for option parsing\n this.bumpSpace();\n identifierAndLocation = this.parseIdentifierIfPossible();\n pluralOffset = result.val;\n }\n var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n if (optionsResult.err) {\n return optionsResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_2 = createLocation(openingBracePosition, this.clonePosition());\n if (argType === 'select') {\n return {\n val: {\n type: types_1.TYPE.select,\n value: value,\n options: fromEntries(optionsResult.val),\n location: location_2,\n },\n err: null,\n };\n }\n else {\n return {\n val: {\n type: types_1.TYPE.plural,\n value: value,\n options: fromEntries(optionsResult.val),\n offset: pluralOffset,\n pluralType: argType === 'plural' ? 'cardinal' : 'ordinal',\n location: location_2,\n },\n err: null,\n };\n }\n }\n default:\n return this.error(error_1.ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n }\n };\n Parser.prototype.tryParseArgumentClose = function (openingBracePosition) {\n // Parse: {value, number, ::currency/GBP }\n //\n if (this.isEOF() || this.char() !== 125 /* `}` */) {\n return this.error(error_1.ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bump(); // `}`\n return { val: true, err: null };\n };\n /**\n * See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n */\n Parser.prototype.parseSimpleArgStyleIfPossible = function () {\n var nestedBraces = 0;\n var startPosition = this.clonePosition();\n while (!this.isEOF()) {\n var ch = this.char();\n switch (ch) {\n case 39 /* `'` */: {\n // Treat apostrophe as quoting but include it in the style part.\n // Find the end of the quoted literal text.\n this.bump();\n var apostrophePosition = this.clonePosition();\n if (!this.bumpUntil(\"'\")) {\n return this.error(error_1.ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n }\n this.bump();\n break;\n }\n case 123 /* `{` */: {\n nestedBraces += 1;\n this.bump();\n break;\n }\n case 125 /* `}` */: {\n if (nestedBraces > 0) {\n nestedBraces -= 1;\n }\n else {\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n }\n break;\n }\n default:\n this.bump();\n break;\n }\n }\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n };\n Parser.prototype.parseNumberSkeletonFromString = function (skeleton, location) {\n var tokens = [];\n try {\n tokens = icu_skeleton_parser_1.parseNumberSkeletonFromString(skeleton);\n }\n catch (e) {\n return this.error(error_1.ErrorKind.INVALID_NUMBER_SKELETON, location);\n }\n return {\n val: {\n type: types_1.SKELETON_TYPE.number,\n tokens: tokens,\n location: location,\n parsedOptions: this.shouldParseSkeletons\n ? icu_skeleton_parser_1.parseNumberSkeleton(tokens)\n : {},\n },\n err: null,\n };\n };\n /**\n * @param nesting_level The current nesting level of messages.\n * This can be positive when parsing message fragment in select or plural argument options.\n * @param parent_arg_type The parent argument's type.\n * @param parsed_first_identifier If provided, this is the first identifier-like selector of\n * the argument. It is a by-product of a previous parsing attempt.\n * @param expecting_close_tag If true, this message is directly or indirectly nested inside\n * between a pair of opening and closing tags. The nested message will not parse beyond\n * the closing tag boundary.\n */\n Parser.prototype.tryParsePluralOrSelectOptions = function (nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n var _a;\n var hasOtherClause = false;\n var options = [];\n var parsedSelectors = new Set();\n var selector = parsedFirstIdentifier.value, selectorLocation = parsedFirstIdentifier.location;\n // Parse:\n // one {one apple}\n // ^--^\n while (true) {\n if (selector.length === 0) {\n var startPosition = this.clonePosition();\n if (parentArgType !== 'select' && this.bumpIf('=')) {\n // Try parse `={number}` selector\n var result = this.tryParseDecimalInteger(error_1.ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, error_1.ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n if (result.err) {\n return result;\n }\n selectorLocation = createLocation(startPosition, this.clonePosition());\n selector = this.message.slice(startPosition.offset, this.offset());\n }\n else {\n break;\n }\n }\n // Duplicate selector clauses\n if (parsedSelectors.has(selector)) {\n return this.error(parentArgType === 'select'\n ? error_1.ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR\n : error_1.ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n }\n if (selector === 'other') {\n hasOtherClause = true;\n }\n // Parse:\n // one {one apple}\n // ^----------^\n this.bumpSpace();\n var openingBracePosition = this.clonePosition();\n if (!this.bumpIf('{')) {\n return this.error(parentArgType === 'select'\n ? error_1.ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\n : error_1.ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n if (fragmentResult.err) {\n return fragmentResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n options.push([\n selector,\n {\n value: fragmentResult.val,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n ]);\n // Keep track of the existing selectors\n parsedSelectors.add(selector);\n // Prep next selector clause.\n this.bumpSpace();\n (_a = this.parseIdentifierIfPossible(), selector = _a.value, selectorLocation = _a.location);\n }\n if (options.length === 0) {\n return this.error(parentArgType === 'select'\n ? error_1.ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR\n : error_1.ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n }\n if (this.requiresOtherClause && !hasOtherClause) {\n return this.error(error_1.ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n return { val: options, err: null };\n };\n Parser.prototype.tryParseDecimalInteger = function (expectNumberError, invalidNumberError) {\n var sign = 1;\n var startingPosition = this.clonePosition();\n if (this.bumpIf('+')) {\n }\n else if (this.bumpIf('-')) {\n sign = -1;\n }\n var hasDigits = false;\n var decimal = 0;\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch >= 48 /* `0` */ && ch <= 57 /* `9` */) {\n hasDigits = true;\n decimal = decimal * 10 + (ch - 48);\n this.bump();\n }\n else {\n break;\n }\n }\n var location = createLocation(startingPosition, this.clonePosition());\n if (!hasDigits) {\n return this.error(expectNumberError, location);\n }\n decimal *= sign;\n if (!isSafeInteger(decimal)) {\n return this.error(invalidNumberError, location);\n }\n return { val: decimal, err: null };\n };\n Parser.prototype.offset = function () {\n return this.position.offset;\n };\n Parser.prototype.isEOF = function () {\n return this.offset() === this.message.length;\n };\n Parser.prototype.clonePosition = function () {\n // This is much faster than `Object.assign` or spread.\n return {\n offset: this.position.offset,\n line: this.position.line,\n column: this.position.column,\n };\n };\n /**\n * Return the code point at the current position of the parser.\n * Throws if the index is out of bound.\n */\n Parser.prototype.char = function () {\n var offset = this.position.offset;\n if (offset >= this.message.length) {\n throw Error('out of bound');\n }\n var code = codePointAt(this.message, offset);\n if (code === undefined) {\n throw Error(\"Offset \" + offset + \" is at invalid UTF-16 code unit boundary\");\n }\n return code;\n };\n Parser.prototype.error = function (kind, location) {\n return {\n val: null,\n err: {\n kind: kind,\n message: this.message,\n location: location,\n },\n };\n };\n /** Bump the parser to the next UTF-16 code unit. */\n Parser.prototype.bump = function () {\n if (this.isEOF()) {\n return;\n }\n var code = this.char();\n if (code === 10 /* '\\n' */) {\n this.position.line += 1;\n this.position.column = 1;\n this.position.offset += 1;\n }\n else {\n this.position.column += 1;\n // 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n this.position.offset += code < 0x10000 ? 1 : 2;\n }\n };\n /**\n * If the substring starting at the current position of the parser has\n * the given prefix, then bump the parser to the character immediately\n * following the prefix and return true. Otherwise, don't bump the parser\n * and return false.\n */\n Parser.prototype.bumpIf = function (prefix) {\n if (startsWith(this.message, prefix, this.offset())) {\n for (var i = 0; i < prefix.length; i++) {\n this.bump();\n }\n return true;\n }\n return false;\n };\n /**\n * Bump the parser until the pattern character is found and return `true`.\n * Otherwise bump to the end of the file and return `false`.\n */\n Parser.prototype.bumpUntil = function (pattern) {\n var currentOffset = this.offset();\n var index = this.message.indexOf(pattern, currentOffset);\n if (index >= 0) {\n this.bumpTo(index);\n return true;\n }\n else {\n this.bumpTo(this.message.length);\n return false;\n }\n };\n /**\n * Bump the parser to the target offset.\n * If target offset is beyond the end of the input, bump the parser to the end of the input.\n */\n Parser.prototype.bumpTo = function (targetOffset) {\n if (this.offset() > targetOffset) {\n throw Error(\"targetOffset \" + targetOffset + \" must be greater than or equal to the current offset \" + this.offset());\n }\n targetOffset = Math.min(targetOffset, this.message.length);\n while (true) {\n var offset = this.offset();\n if (offset === targetOffset) {\n break;\n }\n if (offset > targetOffset) {\n throw Error(\"targetOffset \" + targetOffset + \" is at invalid UTF-16 code unit boundary\");\n }\n this.bump();\n if (this.isEOF()) {\n break;\n }\n }\n };\n /** advance the parser through all whitespace to the next non-whitespace code unit. */\n Parser.prototype.bumpSpace = function () {\n while (!this.isEOF() && _isWhiteSpace(this.char())) {\n this.bump();\n }\n };\n /**\n * Peek at the *next* Unicode codepoint in the input without advancing the parser.\n * If the input has been exhausted, then this returns null.\n */\n Parser.prototype.peek = function () {\n if (this.isEOF()) {\n return null;\n }\n var code = this.char();\n var offset = this.offset();\n var nextCode = this.message.charCodeAt(offset + (code >= 0x10000 ? 2 : 1));\n return nextCode !== null && nextCode !== void 0 ? nextCode : null;\n };\n return Parser;\n}());\nexports.Parser = Parser;\n/**\n * This check if codepoint is alphabet (lower & uppercase)\n * @param codepoint\n * @returns\n */\nfunction _isAlpha(codepoint) {\n return ((codepoint >= 97 && codepoint <= 122) ||\n (codepoint >= 65 && codepoint <= 90));\n}\nfunction _isAlphaOrSlash(codepoint) {\n return _isAlpha(codepoint) || codepoint === 47; /* '/' */\n}\n/** See `parseTag` function docs. */\nfunction _isPotentialElementNameChar(c) {\n return (c === 45 /* '-' */ ||\n c === 46 /* '.' */ ||\n (c >= 48 && c <= 57) /* 0..9 */ ||\n c === 95 /* '_' */ ||\n (c >= 97 && c <= 122) /** a..z */ ||\n (c >= 65 && c <= 90) /* A..Z */ ||\n c == 0xb7 ||\n (c >= 0xc0 && c <= 0xd6) ||\n (c >= 0xd8 && c <= 0xf6) ||\n (c >= 0xf8 && c <= 0x37d) ||\n (c >= 0x37f && c <= 0x1fff) ||\n (c >= 0x200c && c <= 0x200d) ||\n (c >= 0x203f && c <= 0x2040) ||\n (c >= 0x2070 && c <= 0x218f) ||\n (c >= 0x2c00 && c <= 0x2fef) ||\n (c >= 0x3001 && c <= 0xd7ff) ||\n (c >= 0xf900 && c <= 0xfdcf) ||\n (c >= 0xfdf0 && c <= 0xfffd) ||\n (c >= 0x10000 && c <= 0xeffff));\n}\n/**\n * Code point equivalent of regex `\\p{White_Space}`.\n * From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isWhiteSpace(c) {\n return ((c >= 0x0009 && c <= 0x000d) ||\n c === 0x0020 ||\n c === 0x0085 ||\n (c >= 0x200e && c <= 0x200f) ||\n c === 0x2028 ||\n c === 0x2029);\n}\n/**\n * Code point equivalent of regex `\\p{Pattern_Syntax}`.\n * See https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isPatternSyntax(c) {\n return ((c >= 0x0021 && c <= 0x0023) ||\n c === 0x0024 ||\n (c >= 0x0025 && c <= 0x0027) ||\n c === 0x0028 ||\n c === 0x0029 ||\n c === 0x002a ||\n c === 0x002b ||\n c === 0x002c ||\n c === 0x002d ||\n (c >= 0x002e && c <= 0x002f) ||\n (c >= 0x003a && c <= 0x003b) ||\n (c >= 0x003c && c <= 0x003e) ||\n (c >= 0x003f && c <= 0x0040) ||\n c === 0x005b ||\n c === 0x005c ||\n c === 0x005d ||\n c === 0x005e ||\n c === 0x0060 ||\n c === 0x007b ||\n c === 0x007c ||\n c === 0x007d ||\n c === 0x007e ||\n c === 0x00a1 ||\n (c >= 0x00a2 && c <= 0x00a5) ||\n c === 0x00a6 ||\n c === 0x00a7 ||\n c === 0x00a9 ||\n c === 0x00ab ||\n c === 0x00ac ||\n c === 0x00ae ||\n c === 0x00b0 ||\n c === 0x00b1 ||\n c === 0x00b6 ||\n c === 0x00bb ||\n c === 0x00bf ||\n c === 0x00d7 ||\n c === 0x00f7 ||\n (c >= 0x2010 && c <= 0x2015) ||\n (c >= 0x2016 && c <= 0x2017) ||\n c === 0x2018 ||\n c === 0x2019 ||\n c === 0x201a ||\n (c >= 0x201b && c <= 0x201c) ||\n c === 0x201d ||\n c === 0x201e ||\n c === 0x201f ||\n (c >= 0x2020 && c <= 0x2027) ||\n (c >= 0x2030 && c <= 0x2038) ||\n c === 0x2039 ||\n c === 0x203a ||\n (c >= 0x203b && c <= 0x203e) ||\n (c >= 0x2041 && c <= 0x2043) ||\n c === 0x2044 ||\n c === 0x2045 ||\n c === 0x2046 ||\n (c >= 0x2047 && c <= 0x2051) ||\n c === 0x2052 ||\n c === 0x2053 ||\n (c >= 0x2055 && c <= 0x205e) ||\n (c >= 0x2190 && c <= 0x2194) ||\n (c >= 0x2195 && c <= 0x2199) ||\n (c >= 0x219a && c <= 0x219b) ||\n (c >= 0x219c && c <= 0x219f) ||\n c === 0x21a0 ||\n (c >= 0x21a1 && c <= 0x21a2) ||\n c === 0x21a3 ||\n (c >= 0x21a4 && c <= 0x21a5) ||\n c === 0x21a6 ||\n (c >= 0x21a7 && c <= 0x21ad) ||\n c === 0x21ae ||\n (c >= 0x21af && c <= 0x21cd) ||\n (c >= 0x21ce && c <= 0x21cf) ||\n (c >= 0x21d0 && c <= 0x21d1) ||\n c === 0x21d2 ||\n c === 0x21d3 ||\n c === 0x21d4 ||\n (c >= 0x21d5 && c <= 0x21f3) ||\n (c >= 0x21f4 && c <= 0x22ff) ||\n (c >= 0x2300 && c <= 0x2307) ||\n c === 0x2308 ||\n c === 0x2309 ||\n c === 0x230a ||\n c === 0x230b ||\n (c >= 0x230c && c <= 0x231f) ||\n (c >= 0x2320 && c <= 0x2321) ||\n (c >= 0x2322 && c <= 0x2328) ||\n c === 0x2329 ||\n c === 0x232a ||\n (c >= 0x232b && c <= 0x237b) ||\n c === 0x237c ||\n (c >= 0x237d && c <= 0x239a) ||\n (c >= 0x239b && c <= 0x23b3) ||\n (c >= 0x23b4 && c <= 0x23db) ||\n (c >= 0x23dc && c <= 0x23e1) ||\n (c >= 0x23e2 && c <= 0x2426) ||\n (c >= 0x2427 && c <= 0x243f) ||\n (c >= 0x2440 && c <= 0x244a) ||\n (c >= 0x244b && c <= 0x245f) ||\n (c >= 0x2500 && c <= 0x25b6) ||\n c === 0x25b7 ||\n (c >= 0x25b8 && c <= 0x25c0) ||\n c === 0x25c1 ||\n (c >= 0x25c2 && c <= 0x25f7) ||\n (c >= 0x25f8 && c <= 0x25ff) ||\n (c >= 0x2600 && c <= 0x266e) ||\n c === 0x266f ||\n (c >= 0x2670 && c <= 0x2767) ||\n c === 0x2768 ||\n c === 0x2769 ||\n c === 0x276a ||\n c === 0x276b ||\n c === 0x276c ||\n c === 0x276d ||\n c === 0x276e ||\n c === 0x276f ||\n c === 0x2770 ||\n c === 0x2771 ||\n c === 0x2772 ||\n c === 0x2773 ||\n c === 0x2774 ||\n c === 0x2775 ||\n (c >= 0x2794 && c <= 0x27bf) ||\n (c >= 0x27c0 && c <= 0x27c4) ||\n c === 0x27c5 ||\n c === 0x27c6 ||\n (c >= 0x27c7 && c <= 0x27e5) ||\n c === 0x27e6 ||\n c === 0x27e7 ||\n c === 0x27e8 ||\n c === 0x27e9 ||\n c === 0x27ea ||\n c === 0x27eb ||\n c === 0x27ec ||\n c === 0x27ed ||\n c === 0x27ee ||\n c === 0x27ef ||\n (c >= 0x27f0 && c <= 0x27ff) ||\n (c >= 0x2800 && c <= 0x28ff) ||\n (c >= 0x2900 && c <= 0x2982) ||\n c === 0x2983 ||\n c === 0x2984 ||\n c === 0x2985 ||\n c === 0x2986 ||\n c === 0x2987 ||\n c === 0x2988 ||\n c === 0x2989 ||\n c === 0x298a ||\n c === 0x298b ||\n c === 0x298c ||\n c === 0x298d ||\n c === 0x298e ||\n c === 0x298f ||\n c === 0x2990 ||\n c === 0x2991 ||\n c === 0x2992 ||\n c === 0x2993 ||\n c === 0x2994 ||\n c === 0x2995 ||\n c === 0x2996 ||\n c === 0x2997 ||\n c === 0x2998 ||\n (c >= 0x2999 && c <= 0x29d7) ||\n c === 0x29d8 ||\n c === 0x29d9 ||\n c === 0x29da ||\n c === 0x29db ||\n (c >= 0x29dc && c <= 0x29fb) ||\n c === 0x29fc ||\n c === 0x29fd ||\n (c >= 0x29fe && c <= 0x2aff) ||\n (c >= 0x2b00 && c <= 0x2b2f) ||\n (c >= 0x2b30 && c <= 0x2b44) ||\n (c >= 0x2b45 && c <= 0x2b46) ||\n (c >= 0x2b47 && c <= 0x2b4c) ||\n (c >= 0x2b4d && c <= 0x2b73) ||\n (c >= 0x2b74 && c <= 0x2b75) ||\n (c >= 0x2b76 && c <= 0x2b95) ||\n c === 0x2b96 ||\n (c >= 0x2b97 && c <= 0x2bff) ||\n (c >= 0x2e00 && c <= 0x2e01) ||\n c === 0x2e02 ||\n c === 0x2e03 ||\n c === 0x2e04 ||\n c === 0x2e05 ||\n (c >= 0x2e06 && c <= 0x2e08) ||\n c === 0x2e09 ||\n c === 0x2e0a ||\n c === 0x2e0b ||\n c === 0x2e0c ||\n c === 0x2e0d ||\n (c >= 0x2e0e && c <= 0x2e16) ||\n c === 0x2e17 ||\n (c >= 0x2e18 && c <= 0x2e19) ||\n c === 0x2e1a ||\n c === 0x2e1b ||\n c === 0x2e1c ||\n c === 0x2e1d ||\n (c >= 0x2e1e && c <= 0x2e1f) ||\n c === 0x2e20 ||\n c === 0x2e21 ||\n c === 0x2e22 ||\n c === 0x2e23 ||\n c === 0x2e24 ||\n c === 0x2e25 ||\n c === 0x2e26 ||\n c === 0x2e27 ||\n c === 0x2e28 ||\n c === 0x2e29 ||\n (c >= 0x2e2a && c <= 0x2e2e) ||\n c === 0x2e2f ||\n (c >= 0x2e30 && c <= 0x2e39) ||\n (c >= 0x2e3a && c <= 0x2e3b) ||\n (c >= 0x2e3c && c <= 0x2e3f) ||\n c === 0x2e40 ||\n c === 0x2e41 ||\n c === 0x2e42 ||\n (c >= 0x2e43 && c <= 0x2e4f) ||\n (c >= 0x2e50 && c <= 0x2e51) ||\n c === 0x2e52 ||\n (c >= 0x2e53 && c <= 0x2e7f) ||\n (c >= 0x3001 && c <= 0x3003) ||\n c === 0x3008 ||\n c === 0x3009 ||\n c === 0x300a ||\n c === 0x300b ||\n c === 0x300c ||\n c === 0x300d ||\n c === 0x300e ||\n c === 0x300f ||\n c === 0x3010 ||\n c === 0x3011 ||\n (c >= 0x3012 && c <= 0x3013) ||\n c === 0x3014 ||\n c === 0x3015 ||\n c === 0x3016 ||\n c === 0x3017 ||\n c === 0x3018 ||\n c === 0x3019 ||\n c === 0x301a ||\n c === 0x301b ||\n c === 0x301c ||\n c === 0x301d ||\n (c >= 0x301e && c <= 0x301f) ||\n c === 0x3020 ||\n c === 0x3030 ||\n c === 0xfd3e ||\n c === 0xfd3f ||\n (c >= 0xfe45 && c <= 0xfe46));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WHITE_SPACE_REGEX = exports.SPACE_SEPARATOR_END_REGEX = exports.SPACE_SEPARATOR_START_REGEX = void 0;\n// @generated from regex-gen.ts\nexports.SPACE_SEPARATOR_START_REGEX = /^[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]*/i;\nexports.SPACE_SEPARATOR_END_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]*$/i;\nexports.WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createNumberElement = exports.createLiteralElement = exports.isDateTimeSkeleton = exports.isNumberSkeleton = exports.isTagElement = exports.isPoundElement = exports.isPluralElement = exports.isSelectElement = exports.isTimeElement = exports.isDateElement = exports.isNumberElement = exports.isArgumentElement = exports.isLiteralElement = exports.SKELETON_TYPE = exports.TYPE = void 0;\nvar TYPE;\n(function (TYPE) {\n /**\n * Raw text\n */\n TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n /**\n * Variable w/o any format, e.g `var` in `this is a {var}`\n */\n TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n /**\n * Variable w/ number format\n */\n TYPE[TYPE[\"number\"] = 2] = \"number\";\n /**\n * Variable w/ date format\n */\n TYPE[TYPE[\"date\"] = 3] = \"date\";\n /**\n * Variable w/ time format\n */\n TYPE[TYPE[\"time\"] = 4] = \"time\";\n /**\n * Variable w/ select format\n */\n TYPE[TYPE[\"select\"] = 5] = \"select\";\n /**\n * Variable w/ plural format\n */\n TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n /**\n * Only possible within plural argument.\n * This is the `#` symbol that will be substituted with the count.\n */\n TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n /**\n * XML-like tag\n */\n TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE = exports.TYPE || (exports.TYPE = {}));\nvar SKELETON_TYPE;\n(function (SKELETON_TYPE) {\n SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE = exports.SKELETON_TYPE || (exports.SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\nfunction isLiteralElement(el) {\n return el.type === TYPE.literal;\n}\nexports.isLiteralElement = isLiteralElement;\nfunction isArgumentElement(el) {\n return el.type === TYPE.argument;\n}\nexports.isArgumentElement = isArgumentElement;\nfunction isNumberElement(el) {\n return el.type === TYPE.number;\n}\nexports.isNumberElement = isNumberElement;\nfunction isDateElement(el) {\n return el.type === TYPE.date;\n}\nexports.isDateElement = isDateElement;\nfunction isTimeElement(el) {\n return el.type === TYPE.time;\n}\nexports.isTimeElement = isTimeElement;\nfunction isSelectElement(el) {\n return el.type === TYPE.select;\n}\nexports.isSelectElement = isSelectElement;\nfunction isPluralElement(el) {\n return el.type === TYPE.plural;\n}\nexports.isPluralElement = isPluralElement;\nfunction isPoundElement(el) {\n return el.type === TYPE.pound;\n}\nexports.isPoundElement = isPoundElement;\nfunction isTagElement(el) {\n return el.type === TYPE.tag;\n}\nexports.isTagElement = isTagElement;\nfunction isNumberSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nexports.isNumberSkeleton = isNumberSkeleton;\nfunction isDateTimeSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nexports.isDateTimeSkeleton = isDateTimeSkeleton;\nfunction createLiteralElement(value) {\n return {\n type: TYPE.literal,\n value: value,\n };\n}\nexports.createLiteralElement = createLiteralElement;\nfunction createNumberElement(value, style) {\n return {\n type: TYPE.number,\n value: value,\n style: style,\n };\n}\nexports.createNumberElement = createNumberElement;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseDateTimeSkeleton = void 0;\n/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nfunction parseDateTimeSkeleton(skeleton) {\n var result = {};\n skeleton.replace(DATE_TIME_REGEX, function (match) {\n var len = match.length;\n switch (match[0]) {\n // Era\n case 'G':\n result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n break;\n // Year\n case 'y':\n result.year = len === 2 ? '2-digit' : 'numeric';\n break;\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n // Quarter\n case 'q':\n case 'Q':\n throw new RangeError('`q/Q` (quarter) patterns are not supported');\n // Month\n case 'M':\n case 'L':\n result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n break;\n // Week\n case 'w':\n case 'W':\n throw new RangeError('`w/W` (week) patterns are not supported');\n case 'd':\n result.day = ['numeric', '2-digit'][len - 1];\n break;\n case 'D':\n case 'F':\n case 'g':\n throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n // Weekday\n case 'E':\n result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n break;\n case 'e':\n if (len < 4) {\n throw new RangeError('`e..eee` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n case 'c':\n if (len < 4) {\n throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n // Period\n case 'a': // AM, PM\n result.hour12 = true;\n break;\n case 'b': // am, pm, noon, midnight\n case 'B': // flexible day periods\n throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n // Hour\n case 'h':\n result.hourCycle = 'h12';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'H':\n result.hourCycle = 'h23';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'K':\n result.hourCycle = 'h11';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'k':\n result.hourCycle = 'h24';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'j':\n case 'J':\n case 'C':\n throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n // Minute\n case 'm':\n result.minute = ['numeric', '2-digit'][len - 1];\n break;\n // Second\n case 's':\n result.second = ['numeric', '2-digit'][len - 1];\n break;\n case 'S':\n case 'A':\n throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n // Zone\n case 'z': // 1..3, 4: specific non-location format\n result.timeZoneName = len < 4 ? 'short' : 'long';\n break;\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n }\n return '';\n });\n return result;\n}\nexports.parseDateTimeSkeleton = parseDateTimeSkeleton;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./date-time\"), exports);\ntslib_1.__exportStar(require(\"./number\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseNumberSkeleton = exports.parseNumberSkeletonFromString = void 0;\nvar tslib_1 = require(\"tslib\");\nvar regex_generated_1 = require(\"./regex.generated\");\nfunction parseNumberSkeletonFromString(skeleton) {\n if (skeleton.length === 0) {\n throw new Error('Number skeleton cannot be empty');\n }\n // Parse the skeleton\n var stringTokens = skeleton\n .split(regex_generated_1.WHITE_SPACE_REGEX)\n .filter(function (x) { return x.length > 0; });\n var tokens = [];\n for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {\n var stringToken = stringTokens_1[_i];\n var stemAndOptions = stringToken.split('/');\n if (stemAndOptions.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n var stem = stemAndOptions[0], options = stemAndOptions.slice(1);\n for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {\n var option = options_1[_a];\n if (option.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n }\n tokens.push({ stem: stem, options: options });\n }\n return tokens;\n}\nexports.parseNumberSkeletonFromString = parseNumberSkeletonFromString;\nfunction icuUnitToEcma(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n var result = {};\n str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n // @@@ case\n if (typeof g2 !== 'string') {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length;\n }\n // @@@+ case\n else if (g2 === '+') {\n result.minimumSignificantDigits = g1.length;\n }\n // .### case\n else if (g1[0] === '#') {\n result.maximumSignificantDigits = g1.length;\n }\n // .@@## or .@@@ case\n else {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits =\n g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n return '';\n });\n return result;\n}\nfunction parseSign(str) {\n switch (str) {\n case 'sign-auto':\n return {\n signDisplay: 'auto',\n };\n case 'sign-accounting':\n case '()':\n return {\n currencySign: 'accounting',\n };\n case 'sign-always':\n case '+!':\n return {\n signDisplay: 'always',\n };\n case 'sign-accounting-always':\n case '()!':\n return {\n signDisplay: 'always',\n currencySign: 'accounting',\n };\n case 'sign-except-zero':\n case '+?':\n return {\n signDisplay: 'exceptZero',\n };\n case 'sign-accounting-except-zero':\n case '()?':\n return {\n signDisplay: 'exceptZero',\n currencySign: 'accounting',\n };\n case 'sign-never':\n case '+_':\n return {\n signDisplay: 'never',\n };\n }\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n // Engineering\n var result;\n if (stem[0] === 'E' && stem[1] === 'E') {\n result = {\n notation: 'engineering',\n };\n stem = stem.slice(2);\n }\n else if (stem[0] === 'E') {\n result = {\n notation: 'scientific',\n };\n stem = stem.slice(1);\n }\n if (result) {\n var signDisplay = stem.slice(0, 2);\n if (signDisplay === '+!') {\n result.signDisplay = 'always';\n stem = stem.slice(2);\n }\n else if (signDisplay === '+?') {\n result.signDisplay = 'exceptZero';\n stem = stem.slice(2);\n }\n if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n throw new Error('Malformed concise eng/scientific notation');\n }\n result.minimumIntegerDigits = stem.length;\n }\n return result;\n}\nfunction parseNotationOptions(opt) {\n var result = {};\n var signOpts = parseSign(opt);\n if (signOpts) {\n return signOpts;\n }\n return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nfunction parseNumberSkeleton(tokens) {\n var result = {};\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n switch (token.stem) {\n case 'percent':\n case '%':\n result.style = 'percent';\n continue;\n case '%x100':\n result.style = 'percent';\n result.scale = 100;\n continue;\n case 'currency':\n result.style = 'currency';\n result.currency = token.options[0];\n continue;\n case 'group-off':\n case ',_':\n result.useGrouping = false;\n continue;\n case 'precision-integer':\n case '.':\n result.maximumFractionDigits = 0;\n continue;\n case 'measure-unit':\n case 'unit':\n result.style = 'unit';\n result.unit = icuUnitToEcma(token.options[0]);\n continue;\n case 'compact-short':\n case 'K':\n result.notation = 'compact';\n result.compactDisplay = 'short';\n continue;\n case 'compact-long':\n case 'KK':\n result.notation = 'compact';\n result.compactDisplay = 'long';\n continue;\n case 'scientific':\n result = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (tslib_1.__assign(tslib_1.__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'engineering':\n result = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (tslib_1.__assign(tslib_1.__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'notation-simple':\n result.notation = 'standard';\n continue;\n // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n case 'unit-width-narrow':\n result.currencyDisplay = 'narrowSymbol';\n result.unitDisplay = 'narrow';\n continue;\n case 'unit-width-short':\n result.currencyDisplay = 'code';\n result.unitDisplay = 'short';\n continue;\n case 'unit-width-full-name':\n result.currencyDisplay = 'name';\n result.unitDisplay = 'long';\n continue;\n case 'unit-width-iso-code':\n result.currencyDisplay = 'symbol';\n continue;\n case 'scale':\n result.scale = parseFloat(token.options[0]);\n continue;\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n case 'integer-width':\n if (token.options.length > 1) {\n throw new RangeError('integer-width stems only accept a single optional option');\n }\n token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n if (g1) {\n result.minimumIntegerDigits = g2.length;\n }\n else if (g3 && g4) {\n throw new Error('We currently do not support maximum integer digits');\n }\n else if (g5) {\n throw new Error('We currently do not support exact integer digits');\n }\n return '';\n });\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n result.minimumIntegerDigits = token.stem.length;\n continue;\n }\n if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n // Precision\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n // precision-integer case\n if (token.options.length > 1) {\n throw new RangeError('Fraction-precision stems only accept a single optional option');\n }\n token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n // .000* case (before ICU67 it was .000+)\n if (g2 === '*') {\n result.minimumFractionDigits = g1.length;\n }\n // .### case\n else if (g3 && g3[0] === '#') {\n result.maximumFractionDigits = g3.length;\n }\n // .00## case\n else if (g4 && g5) {\n result.minimumFractionDigits = g4.length;\n result.maximumFractionDigits = g4.length + g5.length;\n }\n else {\n result.minimumFractionDigits = g1.length;\n result.maximumFractionDigits = g1.length;\n }\n return '';\n });\n if (token.options.length) {\n result = tslib_1.__assign(tslib_1.__assign({}, result), parseSignificantPrecision(token.options[0]));\n }\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n result = tslib_1.__assign(tslib_1.__assign({}, result), parseSignificantPrecision(token.stem));\n continue;\n }\n var signOpts = parseSign(token.stem);\n if (signOpts) {\n result = tslib_1.__assign(tslib_1.__assign({}, result), signOpts);\n }\n var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n if (conciseScientificAndEngineeringOpts) {\n result = tslib_1.__assign(tslib_1.__assign({}, result), conciseScientificAndEngineeringOpts);\n }\n }\n return result;\n}\nexports.parseNumberSkeleton = parseNumberSkeleton;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WHITE_SPACE_REGEX = void 0;\n// @generated from regex-gen.ts\nexports.WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/* Copyright 2015 William Summers, MetaTribal LLC\n * adapted from https://developer.mozilla.org/en-US/docs/JXON\n *\n * Licensed under the MIT License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://opensource.org/licenses/MIT\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @author William Summers\n *\n */\n\nvar xmlToJSON = (function () {\n\n this.version = \"1.3.5\";\n\n var options = { // set up the default options\n mergeCDATA: true, // extract cdata and merge with text\n grokAttr: true, // convert truthy attributes to boolean, etc\n grokText: true, // convert truthy text/attr to boolean, etc\n normalize: true, // collapse multiple spaces to single space\n xmlns: true, // include namespaces as attribute in output\n namespaceKey: '_ns', // tag name for namespace objects\n textKey: '_text', // tag name for text nodes\n valueKey: '_value', // tag name for attribute values\n attrKey: '_attr', // tag for attr groups\n cdataKey: '_cdata', // tag for cdata nodes (ignored if mergeCDATA is true)\n attrsAsObject: true, // if false, key is used as prefix to name, set prefix to '' to merge children and attrs.\n stripAttrPrefix: true, // remove namespace prefixes from attributes\n stripElemPrefix: true, // for elements of same name in diff namespaces, you can enable namespaces and access the nskey property\n childrenAsArray: true // force children into arrays\n };\n\n var prefixMatch = new RegExp(/(?!xmlns)^.*:/);\n var trimMatch = new RegExp(/^\\s+|\\s+$/g);\n\n this.grokType = function (sValue) {\n if (/^\\s*$/.test(sValue)) {\n return null;\n }\n if (/^(?:true|false)$/i.test(sValue)) {\n return sValue.toLowerCase() === \"true\";\n }\n if (isFinite(sValue)) {\n return parseFloat(sValue);\n }\n return sValue;\n };\n\n this.parseString = function (xmlString, opt) {\n return this.parseXML(this.stringToXML(xmlString), opt);\n }\n\n this.parseXML = function (oXMLParent, opt) {\n\n // initialize options\n for (var key in opt) {\n options[key] = opt[key];\n }\n\n var vResult = {},\n nLength = 0,\n sCollectedTxt = \"\";\n\n // parse namespace information\n if (options.xmlns && oXMLParent.namespaceURI) {\n vResult[options.namespaceKey] = oXMLParent.namespaceURI;\n }\n\n // parse attributes\n // using attributes property instead of hasAttributes method to support older browsers\n if (oXMLParent.attributes && oXMLParent.attributes.length > 0) {\n var vAttribs = {};\n\n for (nLength; nLength < oXMLParent.attributes.length; nLength++) {\n var oAttrib = oXMLParent.attributes.item(nLength);\n vContent = {};\n var attribName = '';\n\n if (options.stripAttrPrefix) {\n attribName = oAttrib.name.replace(prefixMatch, '');\n\n } else {\n attribName = oAttrib.name;\n }\n\n if (options.grokAttr) {\n vContent[options.valueKey] = this.grokType(oAttrib.value.replace(trimMatch, ''));\n } else {\n vContent[options.valueKey] = oAttrib.value.replace(trimMatch, '');\n }\n\n if (options.xmlns && oAttrib.namespaceURI) {\n vContent[options.namespaceKey] = oAttrib.namespaceURI;\n }\n\n if (options.attrsAsObject) { // attributes with same local name must enable prefixes\n vAttribs[attribName] = vContent;\n } else {\n vResult[options.attrKey + attribName] = vContent;\n }\n }\n\n if (options.attrsAsObject) {\n vResult[options.attrKey] = vAttribs;\n } else { }\n }\n\n // iterate over the children\n if (oXMLParent.hasChildNodes()) {\n for (var oNode, sProp, vContent, nItem = 0; nItem < oXMLParent.childNodes.length; nItem++) {\n oNode = oXMLParent.childNodes.item(nItem);\n\n if (oNode.nodeType === 4) {\n if (options.mergeCDATA) {\n sCollectedTxt += oNode.nodeValue;\n } else {\n if (vResult.hasOwnProperty(options.cdataKey)) {\n if (vResult[options.cdataKey].constructor !== Array) {\n vResult[options.cdataKey] = [vResult[options.cdataKey]];\n }\n vResult[options.cdataKey].push(oNode.nodeValue);\n\n } else {\n if (options.childrenAsArray) {\n vResult[options.cdataKey] = [];\n vResult[options.cdataKey].push(oNode.nodeValue);\n } else {\n vResult[options.cdataKey] = oNode.nodeValue;\n }\n }\n }\n } /* nodeType is \"CDATASection\" (4) */\n else if (oNode.nodeType === 3) {\n sCollectedTxt += oNode.nodeValue;\n } /* nodeType is \"Text\" (3) */\n else if (oNode.nodeType === 1) { /* nodeType is \"Element\" (1) */\n\n if (nLength === 0) {\n vResult = {};\n }\n\n // using nodeName to support browser (IE) implementation with no 'localName' property\n if (options.stripElemPrefix) {\n sProp = oNode.nodeName.replace(prefixMatch, '');\n } else {\n sProp = oNode.nodeName;\n }\n\n vContent = xmlToJSON.parseXML(oNode);\n\n if (vResult.hasOwnProperty(sProp)) {\n if (vResult[sProp].constructor !== Array) {\n vResult[sProp] = [vResult[sProp]];\n }\n vResult[sProp].push(vContent);\n\n } else {\n if (options.childrenAsArray) {\n vResult[sProp] = [];\n vResult[sProp].push(vContent);\n } else {\n vResult[sProp] = vContent;\n }\n nLength++;\n }\n }\n }\n } else if (!sCollectedTxt) { // no children and no text, return null\n if (options.childrenAsArray) {\n vResult[options.textKey] = [];\n vResult[options.textKey].push(null);\n } else {\n vResult[options.textKey] = null;\n }\n }\n\n if (sCollectedTxt) {\n if (options.grokText) {\n var value = this.grokType(sCollectedTxt.replace(trimMatch, ''));\n if (value !== null && value !== undefined) {\n vResult[options.textKey] = value;\n }\n } else if (options.normalize) {\n vResult[options.textKey] = sCollectedTxt.replace(trimMatch, '').replace(/\\s+/g, \" \");\n } else {\n vResult[options.textKey] = sCollectedTxt.replace(trimMatch, '');\n }\n }\n\n return vResult;\n }\n\n\n // Convert xmlDocument to a string\n // Returns null on failure\n this.xmlToString = function (xmlDoc) {\n try {\n var xmlString = xmlDoc.xml ? xmlDoc.xml : (new XMLSerializer()).serializeToString(xmlDoc);\n return xmlString;\n } catch (err) {\n return null;\n }\n }\n\n // Convert a string to XML Node Structure\n // Returns null on failure\n this.stringToXML = function (xmlString) {\n try {\n var xmlDoc = null;\n\n if (window.DOMParser) {\n\n var parser = new DOMParser();\n xmlDoc = parser.parseFromString(xmlString, \"text/xml\");\n\n return xmlDoc;\n } else {\n xmlDoc = new ActiveXObject(\"Microsoft.XMLDOM\");\n xmlDoc.async = false;\n xmlDoc.loadXML(xmlString);\n\n return xmlDoc;\n }\n } catch (e) {\n return null;\n }\n }\n\n return this;\n}).call({});\n\nif (typeof module != \"undefined\" && module !== null && module.exports) module.exports = xmlToJSON;\nelse if (typeof define === \"function\" && define.amd) define(function () { return xmlToJSON });\n","import { LanguageModelFactory as LMF, LatinLanguageModel, GreekLanguageModel, ResourceProvider, Lexeme, Lemma, Feature, Inflection, Homonym } from 'alpheios-data-models'\r\nimport BaseAdapter from '@clAdapters/adapters/base-adapter'\r\n\r\nimport DefaultConfig from '@clAdapters/adapters/alpheiostb/config.json'\r\nimport xmlToJSON from 'xmltojson'\r\n\r\nclass AlpheiosTreebankAdapter extends BaseAdapter {\r\n /**\r\n * Treebank adapter uploads config data and fills model property\r\n * @param {Object} config - properties with higher priority\r\n */\r\n constructor (config = {}) {\r\n super()\r\n this.config = this.uploadConfig(config, DefaultConfig)\r\n this.models = { lat: LatinLanguageModel, grc: GreekLanguageModel }\r\n }\r\n\r\n /**\r\n * This method gets data from adapter's engine. All errors are added to adapter.errors\r\n * @param {Symbol} languageID - languageID for getting homonym\r\n * @param {String} wordref - a word reference for getting homonym from Treebank\r\n * Returned values:\r\n * - {Homonym} - if successed\r\n * - {undefined} - if failed\r\n */\r\n async getHomonym (languageID, wordref) {\r\n const server = this.prepareRequest(wordref)\r\n if (!server.url) {\r\n this.addError(this.l10n.getMsg('MORPH_TREEBANK_NO_URL', { word: wordref }))\r\n return\r\n }\r\n try {\r\n const res = await this.fetch(server.url, { type: 'xml' })\r\n\r\n if (res.constructor.name === 'AdapterError') {\r\n return\r\n }\r\n\r\n if (res) {\r\n const langCode = LMF.getLanguageCodeFromId(languageID)\r\n\r\n const jsonObj = xmlToJSON.parseString(res)\r\n jsonObj.words[0].word[0].entry[0].dict[0].hdwd[0]._attr = { lang: { _value: langCode } }\r\n\r\n const homonym = this.transform(jsonObj, jsonObj.words[0].word[0].form[0]._text, server.config)\r\n return homonym\r\n } else {\r\n this.addError(this.l10n.getMsg('MORPH_TREEBANK_NO_ANSWER_FOR_WORD', { word: wordref }))\r\n }\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('MORPH_TREEBANK_UNKNOWN_ERROR', { message: error.message }))\r\n }\r\n }\r\n\r\n /**\r\n * This method prepares the request from the config\r\n * @param {String} wordref - a word reference for getting homonym\r\n * @return {String} - constructed url for getting data from Treebank\r\n */\r\n prepareRequest (wordref) {\r\n const [text, fragment] = wordref.split(/#/)\r\n let requestServer = {} // eslint-disable-line prefer-const\r\n if (text && fragment) {\r\n for (const serverConfig of this.config.servers) {\r\n if (serverConfig.isDefault || serverConfig.texts.includes(text)) {\r\n requestServer.config = serverConfig\r\n requestServer.url = serverConfig.url.replace('r_TEXT', text)\r\n requestServer.url = requestServer.url.replace('r_WORD', fragment).replace('r_CLIENT', serverConfig.clientId)\r\n break\r\n }\r\n }\r\n }\r\n return requestServer\r\n }\r\n\r\n /**\r\n * This method transform data from adapter to Homonym\r\n * @param {Object} jsonObj - data from adapter\r\n * @param {String} targetWord - word\r\n * @param {String} config - server config\r\n * @return {Homonym}\r\n */\r\n transform (jsonObj, targetWord, config) {\r\n 'use strict'\r\n const providerUri = config.providerUri\r\n const providerRights = config.providerRights\r\n const provider = new ResourceProvider(providerUri, providerRights)\r\n\r\n const hdwd = jsonObj.words[0].word[0].entry[0].dict[0].hdwd[0]\r\n let lemmaText = hdwd._text\r\n // the Alpheios v1 treebank data kept trailing digits on the lemmas\r\n // these won't match morphology service lemmas which have them stripped\r\n lemmaText = lemmaText.replace(/\\d+$/, '')\r\n\r\n const model = this.models[hdwd._attr.lang._value]\r\n let lemma = new Lemma(lemmaText, model.languageCode) // eslint-disable-line prefer-const\r\n const lexmodel = new Lexeme(lemma, [])\r\n let inflection = new Inflection(lemmaText, model.languageID, null, null, null) // eslint-disable-line prefer-const\r\n const infl = jsonObj.words[0].word[0].entry[0].infl[0]\r\n inflection.addFeature(new Feature(Feature.types.fullForm, targetWord, model.languageID))\r\n\r\n const features = config.featuresArray\r\n for (const feature of features) {\r\n const localName = feature[0]\r\n const featureType = feature[1]\r\n const addToLemma = feature[2]\r\n if (infl[localName]) {\r\n const obj = model.typeFeature(Feature.types[featureType]).createFeatures(infl[localName][0]._text, 1)\r\n inflection.addFeature(obj)\r\n if (addToLemma) {\r\n lemma.addFeature(obj)\r\n }\r\n }\r\n }\r\n lexmodel.inflections = [inflection]\r\n return new Homonym([ResourceProvider.getProxy(provider, lexmodel)], targetWord)\r\n }\r\n}\r\n\r\nexport default AlpheiosTreebankAdapter\r\n","import BaseAdapter from '@clAdapters/adapters/base-adapter'\r\nimport AlpheiosLexiconTransformer from '@clAdapters/transformers/alpheios-lexicon-transformer'\r\nimport { LanguageModelFactory, Constants, Feature } from 'alpheios-data-models'\r\nimport ImportData from '@clAdapters/transformers/import-morph-data.js'\r\n\r\nimport DefaultConfig from '@clAdapters/adapters/alpheiostb/config.json'\r\nimport {\r\n MessagingService, WindowIframeDestination as Destination, RequestMessage, ResponseMessage\r\n} from 'alpheios-messaging'\r\n\r\nclass ArethusaTreebankAdapter extends BaseAdapter {\r\n /**\r\n * Treebank adapter uploads config data and fills model property\r\n * @param {Object} config - properties with higher priority\r\n */\r\n constructor (config = {}) {\r\n super()\r\n this.engineSet = null\r\n this.config = this.uploadConfig(config, DefaultConfig)\r\n }\r\n\r\n getMessagingService (config) {\r\n if (!MessagingService.hasService(config.name)) {\r\n MessagingService.createService(config.name, new Destination(config))\r\n }\r\n return MessagingService.getService(config.name)\r\n }\r\n\r\n async _fetchArethusaData (targetURL, sentenceId, wordId) {\r\n const config = this._getMessageConfig(targetURL)\r\n const svc = this.getMessagingService(config)\r\n const requestBodyNav = {\r\n gotoSentence: { sentenceId: sentenceId }\r\n }\r\n const message = new RequestMessage(requestBodyNav)\r\n await svc.sendRequestTo(config.name, message)\r\n const requestBodyMorph = {\r\n getMorph: {\r\n sentenceId: sentenceId,\r\n wordId: wordId\r\n }\r\n }\r\n const responseMessage = await svc.sendRequestTo(config.name, new RequestMessage(requestBodyMorph))\r\n return responseMessage.body\r\n }\r\n\r\n _getMessageConfig (targetURL) {\r\n return {\r\n name: targetURL,\r\n targetURL: targetURL,\r\n targetIframeID: 'alpheios-treebank-frame'\r\n }\r\n }\r\n\r\n /**\r\n * This method refreshes the view of the Arethusa application\r\n */\r\n async refreshView (provider) {\r\n const config = this._getMessageConfig(provider)\r\n const svc = this.getMessagingService(config)\r\n const requestBody = { refreshView: { } }\r\n let response\r\n try {\r\n response = await svc.sendRequestTo(config.name, new RequestMessage(requestBody))\r\n } catch (response) {\r\n if (response instanceof ResponseMessage) {\r\n // This is an error from a treebank template app\r\n this.addRemoteError(response.errorCode, response.body.message)\r\n } else {\r\n // This is some other error\r\n this.addError(response.message)\r\n }\r\n return\r\n }\r\n return response.body\r\n }\r\n\r\n /**\r\n * This method gets data from adapter's engine. All errors are added to adapter.errors\r\n * @param {Symbol} languageID - languageID for getting homonym\r\n * @param {String} word - the target word\r\n * @param {String} provider - the domain which provides Arethusa\r\n * @param {String} sentenceId - the identifier for the sentence\r\n * @param {String} wordId - the identifier for the word\r\n * Returned values:\r\n * - {Homonym} - if successed\r\n * - {undefined} - if failed\r\n */\r\n async getHomonym (languageID, word, provider, sentenceId, wordId) {\r\n try {\r\n if (typeof sentenceId !== 'undefined' && typeof wordId !== 'undefined') {\r\n const tbRes = await this._fetchArethusaData(provider, sentenceId, wordId)\r\n if (!tbRes || Object.keys(tbRes).length === 0) {\r\n this.addError(this.l10n.getMsg('MORPH_TREEBANK_NO_ANSWER_FOR_WORD', { word: word }))\r\n return\r\n }\r\n const languageModel = LanguageModelFactory.getLanguageModel(languageID)\r\n if (!languageModel) {\r\n this.addError(this.l10n.getMsg('MORPH_TREEBANK_UNSUPPORTED_LANGUAGE', { languageId: languageID.toString() }))\r\n return\r\n }\r\n let mapper = new ImportData(languageModel, 'arethusa') // eslint-disable-line prefer-const\r\n mapper.setPropertyParser(function (propertyName, propertyValue, inputElem) {\r\n if (propertyName === 'pers') {\r\n propertyValue = propertyValue.replace('first person', Constants.ORD_1ST)\r\n propertyValue = propertyValue.replace('second person', Constants.ORD_2ND)\r\n propertyValue = propertyValue.replace('third person', Constants.ORD_3RD)\r\n }\r\n return [propertyValue]\r\n })\r\n const transformAdapter = new AlpheiosLexiconTransformer(this, mapper, 'arethusa')\r\n const homonym = transformAdapter.transformData(tbRes, word)\r\n // handle verb participles in a way consistent with the morpheus parser\r\n // which reports the pofs of the lemma as verb and pofs of the inflection as verb participle\r\n if (homonym && homonym.lexemes && homonym.lexemes.length === 1 &&\r\n homonym.lexemes[0].lemma.features[Feature.types.part].value === Constants.POFS_VERB &&\r\n homonym.lexemes[0].inflections.length === 1 &&\r\n languageModel.normalizeFeatureValue(Feature.types.mood, homonym.lexemes[0].inflections[0][Feature.types.mood].value) === Constants.MOOD_PARTICIPLE) {\r\n homonym.lexemes[0].inflections[0].addFeature(new Feature(Feature.types.part, Constants.POFS_VERB_PARTICIPLE, languageModel.languageID))\r\n }\r\n return homonym\r\n } else {\r\n this.addError(this.l10n.getMsg('MORPH_TREEBANK_MISSING_REF', { request: word }))\r\n }\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('MORPH_TREEBANK_UNKNOWN_ERROR', { message: error.message }))\r\n }\r\n }\r\n\r\n async findWord (provider, word, prefix, suffix, sentenceId) {\r\n const config = this._getMessageConfig(provider)\r\n const svc = this.getMessagingService(config)\r\n const gotoSentenceBody = {\r\n gotoSentence: { sentenceId }\r\n }\r\n try {\r\n await svc.sendRequestTo(config.name, new RequestMessage(gotoSentenceBody))\r\n const findWordBody = { findWord: { sentenceId, word, prefix, suffix } }\r\n const response = await svc.sendRequestTo(config.name, new RequestMessage(findWordBody))\r\n return response.body\r\n } catch (response) {\r\n if (response instanceof ResponseMessage) {\r\n // This is an error from a treebank template app\r\n this.addRemoteError(response.errorCode, response.body.message)\r\n } else {\r\n // This is some other error\r\n this.addError(response.message)\r\n }\r\n }\r\n }\r\n\r\n async gotoSentence (provider, sentenceId, wordIds = []) {\r\n const config = this._getMessageConfig(provider)\r\n const svc = this.getMessagingService(config)\r\n const gotoSentenceBody = {\r\n gotoSentence: { sentenceId, wordIds }\r\n }\r\n try {\r\n const response = await svc.sendRequestTo(config.name, new RequestMessage(gotoSentenceBody))\r\n return response.body\r\n } catch (response) {\r\n if (response instanceof ResponseMessage) {\r\n // This is an error from a treebank template app\r\n this.addRemoteError(response.errorCode, response.body.message)\r\n } else {\r\n // This is some other error\r\n this.addError(response.message)\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default ArethusaTreebankAdapter\r\n","import axios from 'axios'\r\nimport { Logger } from 'alpheios-data-models'\r\nimport { L10n } from 'alpheios-l10n'\r\nimport AdapterError from '@clAdapters/errors/adapter-error'\r\nimport AdapterWarning from '@clAdapters/errors/adapter-warning.js'\r\nimport RemoteError from '@clAdapters/errors/remote-error.js'\r\n\r\nimport Locales from '@clAdapters/locales/locales.js'\r\nimport enUS from '@clAdapters/locales/en-us/messages.json'\r\nimport enGB from '@clAdapters/locales/en-gb/messages.json'\r\n\r\nclass BaseAdapter {\r\n /**\r\n * Every adapter has errors array and L10n property for localizing messages\r\n */\r\n constructor () {\r\n this.errors = []\r\n this.l10n = new L10n()\r\n .addMessages(enUS, Locales.en_US)\r\n .addMessages(enGB, Locales.en_GB)\r\n .setLocale(Locales.en_US)\r\n }\r\n\r\n /**\r\n * This method is used for adding error meassage with additional data\r\n * @param {String} message - message text for the error\r\n */\r\n addError (message, statusCode) {\r\n const error = new AdapterError(this.config.category, this.config.adapterName, this.config.method, message, statusCode)\r\n this.errors.push(error)\r\n }\r\n\r\n addRemoteError (errorCode, message) {\r\n const error = new RemoteError(this.config.category, this.config.adapterName, this.config.method, errorCode, message)\r\n this.errors.push(error)\r\n }\r\n\r\n addWarning (errorCode, message) {\r\n const warning = new AdapterWarning(this.config.category, this.config.adapterName, this.config.method, errorCode, message)\r\n this.errors.push(warning)\r\n }\r\n\r\n /**\r\n * This method is used for uploding config property from current properties and default properties\r\n * @param {Object} config - properties with higher priority\r\n * @param {Object} defaultConfig - default properties\r\n * @return {Object} - configuration data\r\n */\r\n uploadConfig (config, defaultConfig) {\r\n let configRes = {} // eslint-disable-line prefer-const\r\n Object.keys(config).forEach(configKey => {\r\n configRes[configKey] = config[configKey]\r\n })\r\n\r\n Object.keys(defaultConfig).forEach(configKey => {\r\n if (!configRes[configKey]) {\r\n configRes[configKey] = defaultConfig[configKey]\r\n } else if (Array.isArray(configRes[configKey])) {\r\n configRes[configKey] = configRes[configKey].map((item, index) => {\r\n return { ...defaultConfig[configKey][index], ...item }\r\n })\r\n } else if (configRes[configKey] instanceof Object) {\r\n configRes[configKey] = { ...defaultConfig[configKey], ...configRes[configKey] }\r\n }\r\n })\r\n\r\n return configRes\r\n }\r\n\r\n /**\r\n * This method is used for creating timeout Promise\r\n * @param {Number} ms - amount of ms for creation timeout\r\n * @return {Promise}\r\n */\r\n timeout (ms) {\r\n return new Promise(resolve => setTimeout(resolve, ms))\r\n }\r\n\r\n /**\r\n * This method is used for fetching data using window.fetch\r\n * @param {String} url - url for fetching data\r\n * @param {Object} options\r\n * @param {String} options.type - json is default, also it could be xml. This property defines output format.\r\n * xml - response.text(), otherwise - response.json()\r\n * @return {Object|String}\r\n */\r\n async fetchWindow (url, options = { type: 'json' }) {\r\n if (url) {\r\n try {\r\n const response = await window.fetch(url, options.requestParams)\r\n if (!response.ok) {\r\n let statusText\r\n\r\n if (response.status === 400) {\r\n const resultResponse = await response.json()\r\n statusText = (resultResponse && resultResponse.message) ? resultResponse.message : response.statusText\r\n }\r\n\r\n this.addError(this.l10n.getMsg('BASIC_ADAPTER_URL_RESPONSE_FAILED', { statusCode: response.status, statusText }), response.status)\r\n return\r\n }\r\n if (options.type === 'xml') {\r\n return response.text()\r\n } else {\r\n return response.json()\r\n }\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('BASIC_ADAPTER_NO_DATA_FROM_URL', { url: url }))\r\n }\r\n } else {\r\n this.addError(this.l10n.getMsg('BASIC_ADAPTER_EMPTY_URL'))\r\n }\r\n }\r\n\r\n /**\r\n * This method is used for fetching data using window.fetch with timeout reject\r\n * @param {String} url - url for fetching data\r\n * @param {Object} options\r\n * @param {String} options.type - json is default, also it could be xml. This property defines output format.\r\n * xml - response.text(), otherwise - response.json()\r\n * @param {Number} options.timeout - timeout ms amount\r\n * @return {Promise}\r\n */\r\n fetchWindowTimeout (url, options) {\r\n if (url) {\r\n let didTimeOut = false\r\n return new Promise((resolve, reject) => {\r\n const timeout = setTimeout(() => {\r\n didTimeOut = true\r\n reject(new Error('Request timed out', url))\r\n }, options.timeout)\r\n\r\n window.fetch(url, options.requestParams)\r\n .then((response) => {\r\n clearTimeout(timeout)\r\n if (!didTimeOut) {\r\n if (options.type === 'xml') {\r\n resolve(response.text())\r\n } else {\r\n resolve(response.json())\r\n }\r\n }\r\n })\r\n .catch((err) => {\r\n this.addError(this.l10n.getMsg('BASIC_ADAPTER_NO_DATA_FROM_URL', { url: url }))\r\n if (didTimeOut) return\r\n reject(err)\r\n })\r\n })\r\n } else {\r\n this.addError(this.l10n.getMsg('BASIC_ADAPTER_EMPTY_URL'))\r\n }\r\n }\r\n\r\n /**\r\n * This method is used for fetching data using axios\r\n * @param {String} url - url for fetching data\r\n * @param {Object} options\r\n * @param {Number} options.timeout - timeout ms amount\r\n * @return {Object|String}\r\n */\r\n async fetchAxios (url, options) {\r\n if (url) {\r\n const finalOptions = Object.assign({ url: encodeURI(decodeURI(url)) }, options)\r\n try {\r\n const res = await axios(finalOptions)\r\n return res.data\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('BASIC_ADAPTER_NO_DATA_FROM_URL', { url: url }))\r\n }\r\n } else {\r\n this.addError(this.l10n.getMsg('BASIC_ADAPTER_EMPTY_URL'))\r\n }\r\n }\r\n\r\n printError (error) {\r\n if (error.response) {\r\n // The request was made and the server responded with a status code\r\n // that falls out of the range of 2xx\r\n Logger.getInstance().error('Alpheios error: unexpected response retrieving data from service', error)\r\n } else if (error.request) {\r\n // The request was made but no response was received\r\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\r\n // http.ClientRequest in node.js\r\n Logger.getInstance().error('Alpheios error: no response from service', error)\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n Logger.getInstance().error('Alpheios error: unexpected error requesting data from service', error.message)\r\n }\r\n }\r\n\r\n /**\r\n * This method is used for fetching data using different methods. If window is defined - than it would be used window.fetch.\r\n * Otherwise axios would be used.\r\n * @param {String} url - url for fetching data\r\n * @param {Object} options\r\n * @param {String} options.type - json is default, also it could be xml. This property defines output format.\r\n * xml - response.text(), otherwise - response.json()\r\n * @param {Number} options.timeout - timeout ms amount\r\n * @return {Object|String}\r\n */\r\n async fetch (url, options = {}) {\r\n let res\r\n\r\n if (url) {\r\n try {\r\n if (typeof window !== 'undefined' && typeof window.fetch !== 'undefined') {\r\n if (options && options.timeout > 0) {\r\n res = await this.fetchWindowTimeout(url, options)\r\n } else {\r\n res = await this.fetchWindow(url, options)\r\n }\r\n } else {\r\n res = await this.fetchAxios(url, options)\r\n }\r\n\r\n return res\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('BASIC_ADAPTER_UNKNOWN_ERROR', { message: error.message }))\r\n }\r\n } else {\r\n this.addError(this.l10n.getMsg('BASIC_ADAPTER_EMPTY_URL'))\r\n }\r\n }\r\n}\r\n\r\nexport default BaseAdapter\r\n","/* eslint-disable no-unused-vars */\r\nimport BaseAdapter from '@clAdapters/adapters/base-adapter'\r\nimport { ChineseLanguageModel, Lemma, Lexeme, Homonym, Feature, Definition } from 'alpheios-data-models'\r\nimport {\r\n MessagingService, WindowIframeDestination as Destination, CedictDestinationConfig as CedictConfig, RequestMessage\r\n} from 'alpheios-messaging'\r\n\r\nexport const CedictCharacterForms = {\r\n SIMPLIFIED: 'simplified',\r\n TRADITIONAL: 'traditional'\r\n}\r\n\r\nconst msgServiceName = 'AdaptersLexisService'\r\n\r\nclass AlpheiosChineseLocAdapter extends BaseAdapter {\r\n constructor (config = {}) {\r\n super()\r\n this.config = config\r\n this.cedictConfig = CedictConfig\r\n if (!this.config.serviceUrl) {\r\n throw new Error('An obligatory serviceUrl parameter is missing')\r\n }\r\n this.cedictConfig.targetURL = this.config.serviceUrl\r\n\r\n /*\r\n AlpheiosChineseLocAdapter is created every time when a new lexical request for Chinese data comes in.\r\n We do not want to create a new instance of a messaging service with that. Thus, we'll use a single\r\n instance of the service that will be created once and reused across consecutive constructor invocations.\r\n */\r\n if (!MessagingService.hasService(msgServiceName)) {\r\n MessagingService.createService(msgServiceName, new Destination({\r\n name: this.cedictConfig.name,\r\n targetURL: this.cedictConfig.targetURL,\r\n targetIframeID: this.cedictConfig.targetIframeID,\r\n commModes: [Destination.commModes.SEND]\r\n }))\r\n }\r\n this._messagingService = MessagingService.getService(msgServiceName)\r\n }\r\n\r\n get languageID () { return ChineseLanguageModel.languageID }\r\n\r\n /**\r\n * Creates a list of words that will be requested from a CEDICT service.\r\n * This method builds a list of words that would make sense in a context of a Chinese language\r\n * out of the word selected by user and its surrounding texts (context forward represents\r\n * the text that is located at the right of the selected word.\r\n *\r\n * @param {string} targetWord - A word that was selected by the user.\r\n * @param {string} contextForward - A piece of text that follows the selected word in a text.\r\n * @returns {[string]} An array of words that will be requested from a CEDICT service.\r\n * @private\r\n */\r\n static _buildWordList (targetWord, contextForward) {\r\n const wordList = [targetWord]\r\n if (contextForward) {\r\n for (let i = 0; i < contextForward.length; i++) {\r\n wordList.push(`${targetWord}${contextForward.slice(0, i + 1)}`)\r\n }\r\n }\r\n return wordList\r\n }\r\n\r\n async getHomonym (targetWord, contextForward) {\r\n try {\r\n const requestBody = {\r\n getWords: {\r\n words: this.constructor._buildWordList(targetWord, contextForward)\r\n }\r\n }\r\n let response\r\n try {\r\n response = await this._messagingService.sendRequestTo(this.cedictConfig.name, new RequestMessage(requestBody))\r\n } catch (response) {\r\n this.addRemoteError(response.errorCode, response.body.message)\r\n return\r\n }\r\n\r\n if (Object.keys(response.body).length === 0) {\r\n this.addError(this.l10n.getMsg('MORPH_NO_HOMONYM', { word: targetWord, languageId: this.languageID.toString() }))\r\n return\r\n }\r\n const homonym = this._transformData(response.body, targetWord)\r\n if (!homonym) {\r\n this.addError(this.l10n.getMsg('MORPH_NO_HOMONYM', { word: targetWord, languageId: this.languageID.toString() }))\r\n return\r\n }\r\n return homonym\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('MORPH_UNKNOWN_ERROR', { message: error.message }))\r\n }\r\n }\r\n\r\n async loadData (timeout) {\r\n try {\r\n const requestBody = {\r\n loadData: {}\r\n }\r\n let response\r\n try {\r\n response = await this._messagingService.sendRequestTo(this.cedictConfig.name, new RequestMessage(requestBody), timeout)\r\n } catch (response) {\r\n this.addRemoteError(response.errorCode, response.body.message)\r\n }\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('MORPH_UNKNOWN_ERROR', { message: error.message }))\r\n }\r\n }\r\n\r\n _transformData (cedictEntries, targetWord) {\r\n // eslint-disable-next-line no-prototype-builtins\r\n const characterForm = cedictEntries.hasOwnProperty(CedictCharacterForms.SIMPLIFIED)\r\n ? CedictCharacterForms.SIMPLIFIED\r\n : CedictCharacterForms.TRADITIONAL\r\n let lexemes = [] // eslint-disable-line prefer-const\r\n const wordEntries = Object.values(cedictEntries[characterForm]).flat()\r\n wordEntries.forEach(entry => {\r\n const cfData = entry[characterForm]\r\n const headword = cfData.headword\r\n let lemma = new Lemma(headword, this.languageID, []) // eslint-disable-line prefer-const\r\n\r\n // eslint-disable-next-line prefer-const\r\n let pronunciationValues = entry.pinyin ? [ChineseLanguageModel.formatPinyin(entry.pinyin)] : []\r\n pronunciationValues = ['mandarin', 'cantonese', 'tang'].reduce((arr, i) => {\r\n // Add all of the values listed above to an array or pronunciation feature. Each feature value will be preceded with its name.\r\n // TODO: Update once we decide on a better format of storing pronunciation in a Feature object.\r\n if (cfData[i]) arr.push(`${i} - ${cfData[i]}`); return arr\r\n }, pronunciationValues)\r\n lemma.addFeature(this._createFeature(Feature.types.pronunciation, pronunciationValues))\r\n lemma.addFeature(this._createFeature(Feature.types.note, characterForm))\r\n if (cfData.radical && cfData.radical.character) lemma.addFeature(this._createFeature(Feature.types.radical, cfData.radical.character))\r\n if (cfData.frequency) lemma.addFeature(this._createFeature(Feature.types.frequency, cfData.frequency, 10))\r\n\r\n let lexModel = new Lexeme(lemma, []) // eslint-disable-line prefer-const\r\n const shortDefs = entry.definitions.map(entry => new Definition(entry, 'eng', 'text/plain', headword))\r\n lexModel.meaning.appendShortDefs(shortDefs)\r\n lexemes.push(lexModel)\r\n })\r\n let homonym = new Homonym(lexemes, targetWord) // eslint-disable-line prefer-const\r\n /*\r\n As a temporary measure, until HomonymSet is introduced, we will place several Chinese homonyms\r\n into the single Homonym object as individual lexemes. We will use an `isMultiHomonym` prop set to true\r\n to mark Homonym objects like this.\r\n */\r\n homonym.isMultiHomonym = AlpheiosChineseLocAdapter._wordsFound(cedictEntries[characterForm]) > 1\r\n return homonym\r\n }\r\n\r\n /**\r\n * Returns the number of words that has some matching CEDICT entries.\r\n *\r\n * @param {object} result - Data returned from CEDICT, an object whose keys are words and values are arrays\r\n * either empty (if no entries in CEDICT are found for a word) or containing CEDICT records.\r\n * @returns {number} A number of words that has some matching CECIDT records.\r\n * @private\r\n */\r\n static _wordsFound (result) {\r\n return Object.keys(result).filter(key => result[key].length > 0).length\r\n }\r\n\r\n _createFeature (featureType, values) {\r\n return new Feature(featureType, values, this.languageID)\r\n }\r\n}\r\n\r\nexport default AlpheiosChineseLocAdapter\r\n","import DefaultConfig from '@clAdapters/adapters/concordance/config.json'\r\nimport AuthorWorkConfigConfig from '@clAdapters/adapters/concordance/author-work.json'\r\n\r\nimport { ResourceProvider, Author, TextWork, WordUsageExample, LanguageModelFactory } from 'alpheios-data-models'\r\nimport BaseAdapter from '@clAdapters/adapters/base-adapter'\r\n\r\nclass AlpheiosConcordanceAdapter extends BaseAdapter {\r\n /**\r\n * Adapter uploads config data and creates provider\r\n * @param {Object} config - properties with higher priority\r\n */\r\n constructor (config = {}) {\r\n super()\r\n this.config = this.uploadConfig(config, DefaultConfig)\r\n this.provider = new ResourceProvider(this.config.url, this.config.rights)\r\n this.authors = []\r\n }\r\n\r\n /**\r\n * This method retrieves a list of available authors and textWorks.\r\n * For now it uploads data from json file, but later it will fetch data from cordance api\r\n * @param {Boolean} reload - if true - data will be forced to reload from source\r\n * @return {Author[]]}\r\n */\r\n async getAuthorsWorks (reload = false) {\r\n try {\r\n if (reload || this.authors.length === 0) {\r\n this.authorWorkData = await this.uploadConfig({}, AuthorWorkConfigConfig)\r\n\r\n this.authors = []\r\n for (const authorWorkDataItem of Object.values(this.authorWorkData.authors)) {\r\n const author = this.createAuthor(authorWorkDataItem)\r\n this.authors.push(author)\r\n }\r\n }\r\n return this.authors\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('CONCORDANCE_AUTHOR_UPLOAD_ERROR', { message: error.message }))\r\n }\r\n }\r\n\r\n /**\r\n * This method retrieves a list of word usage examples from corcondance api and creates WordUsageExample-s.\r\n * @param {Homonym} homonym - homonym for retrieving word usage examples\r\n * @param {Object} filters - { author: {Author}, textWork: {TextWork} } - filter's property for getting data,\r\n * it could be filtered: no filter, by author, by author and textWork\r\n * @param {Object} pagination - { property: 'max', value: {Integer} } - property for setting max limit for the result\r\n * @param {Object} sort - { } - it is an empty property for future sort feature\r\n * @return {Object} - with the following format\r\n * {\r\n * {WordUsageExample[]} wordUsageExamples - result wordUsageExamples\r\n * {String} targetWord - source targetWord\r\n * {String} language - source languageCode\r\n * {ResourceProvider} provider - provider data\r\n * }\r\n */\r\n async getWordUsageExamples (homonym, filters = {}, pagination = {}, sort = {}) {\r\n try {\r\n const url = this.createFetchURL(homonym, filters, pagination, sort)\r\n const wordUsageListRes = await this.fetch(url)\r\n if (Array.isArray(wordUsageListRes)) {\r\n const parsedWordUsageList = await this.parseWordUsageResult(wordUsageListRes, homonym)\r\n return {\r\n wordUsageExamples: parsedWordUsageList,\r\n targetWord: homonym.targetWord,\r\n language: LanguageModelFactory.getLanguageCodeFromId(homonym.languageID),\r\n provider: this.provider\r\n }\r\n } else {\r\n return []\r\n }\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('CONCORDANCE_WORD_USAGE_FETCH_ERROR', { message: error.message }))\r\n }\r\n }\r\n\r\n /**\r\n * This method constructs full url for getting data for getWordUsageExamples method using properties.\r\n * @param {Homonym} homonym - homonym for retrieving word usage examples\r\n * @param {Object} filters - { author: {Author}, textWork: {TextWork} } - filter's property for getting data,\r\n * it could be filtered: no filter, by author, by author and textWork\r\n * @param {Object} pagination - { property: 'max', value: {Integer} } - property for setting max limit for the result\r\n * @param {Object} sort - { } - it is an empty property for future sort feature\r\n * @return {String}\r\n */\r\n createFetchURL (homonym, filters, pagination, sort) {\r\n const filterFormatted = this.formatFilter(filters)\r\n const paginationFormatted = this.formatPagination(pagination)\r\n return `${this.config.url}${encodeURIComponent(homonym.targetWord)}${filterFormatted}${paginationFormatted}`\r\n }\r\n\r\n /**\r\n * This method formats filters property for fetch url.\r\n * @param {Object} filters - { author: {Author}, textWork: {TextWork} } - filter's property for getting data,\r\n * it could be filtered: no filter, by author, by author and textWork\r\n * @return {String}\r\n */\r\n formatFilter (filters) {\r\n if (filters && filters.author) {\r\n if (filters.textWork) {\r\n return `[${filters.author.ID}:${filters.textWork.ID}]`\r\n }\r\n return `[${filters.author.ID}]`\r\n }\r\n return ''\r\n }\r\n\r\n /**\r\n * This method formats pagination property for fetch url.\r\n * @param {Object} pagination - { property: 'max', value: {Integer} } - property for setting max limit for the result\r\n * @return {String}\r\n */\r\n formatPagination (pagination) {\r\n // the PHI service supports two pagination parameters: authmax and max\r\n // authmax sets the max hits to return per author and max sets the max hits to return over alpheios-data-models\r\n // max trumps authmax - i.e. only the max number of hits will be returned, and authmax applies after that\r\n // given that there a finite number of authors, we want to set the values for these differently depending upon whether\r\n // the request is filtered by author or not - and allowing user specification of the max across all authors probably\r\n // isn't a good idea, because what we really want in this case is no overall max applied, but that option is not\r\n // avaliable from the service at the moment\r\n if (pagination && pagination.property && (pagination.property === 'authmax') && pagination.value) {\r\n return `?${pagination.property}=${parseInt(pagination.value)}&max=${this.config.maxResultsOverride}`\r\n } else if (pagination && pagination.property && (pagination.property === 'max') && pagination.value) {\r\n return `?${pagination.property}=${parseInt(pagination.value)}`\r\n }\r\n return ''\r\n }\r\n\r\n /**\r\n * This method parses json result from concordance source for word usage examples.\r\n * @param {Object} jsonObj - json response from url\r\n * @param {Homonym} homonym - homonym for retrieving word usage examples\r\n * @param {Author} author - author from filter\r\n * @param {TextWork} textWork - textWork from filter\r\n * @return {WordUsageExample[]}\r\n */\r\n async parseWordUsageResult (jsonObj, homonym) {\r\n let wordUsageExamples = [] // eslint-disable-line prefer-const\r\n let author, textWork, passage\r\n\r\n if (this.authors.length === 0) {\r\n await this.getAuthorsWorks()\r\n }\r\n\r\n for (const jsonObjItem of jsonObj) {\r\n author = this.getAuthorByAbbr(jsonObjItem)\r\n if (author) {\r\n textWork = this.getTextWorkByAbbr(author, jsonObjItem)\r\n if (textWork) {\r\n passage = this.getPassage(jsonObjItem)\r\n\r\n let wordUsageExample = this.createWordUsageExample(jsonObjItem, homonym, author, textWork, passage) // eslint-disable-line prefer-const\r\n wordUsageExamples.push(wordUsageExample)\r\n }\r\n }\r\n }\r\n return wordUsageExamples\r\n }\r\n\r\n getAuthorByAbbr (jsonObj) {\r\n if (jsonObj.cit && this.authors.length > 0) {\r\n const authorAbbr = jsonObj.cit.split('.')[0]\r\n return this.authors.find(author => Object.values(author.abbreviations).includes(authorAbbr))\r\n }\r\n return null\r\n }\r\n\r\n getTextWorkByAbbr (author, jsonObj) {\r\n if (jsonObj.cit && author && author.works.length > 0) {\r\n const parts = jsonObj.cit.split('.')\r\n // if we have only 2 parts in the citation, it's probably an author without a work\r\n // which in the phi data is really when the author and work are referenced as the same thing\r\n // as in an anonymous work\r\n if (parts.length > 2) {\r\n const textWorkAbbr = parts[1]\r\n return author.works.find(textWork => Object.values(textWork.abbreviations).includes(textWorkAbbr))\r\n }\r\n }\r\n return null\r\n }\r\n\r\n getPassage (jsonObj) {\r\n let passage = null\r\n if (jsonObj.cit) {\r\n const parts = jsonObj.cit.split('.')\r\n // if we have only 2 parts in the citation, it's probably an author without a work\r\n // which in the phi data is really when the author and work are referenced as the same thing\r\n // as in an anonymous work\r\n if (parts.length === 2) {\r\n passage = parts.slice(1).join('.')\r\n } else if (parts.length > 2) {\r\n passage = parts.slice(2).join('.')\r\n }\r\n }\r\n return passage\r\n }\r\n\r\n /**\r\n * This property is used to define prefix fr extract ID\r\n * @returns {String}\r\n */\r\n get defaultIDPrefix () {\r\n return 'phi'\r\n }\r\n\r\n /**\r\n * Method returns Author for given jsonObj (from concordance API)\r\n * @param {Object} jsonObj - json object with data of the Author\r\n * @returns {Author}\r\n */\r\n createAuthor (jsonObj) {\r\n let titles = {} // eslint-disable-line prefer-const\r\n jsonObj.title.forEach(titleItem => {\r\n titles[titleItem['@lang']] = titleItem['@value']\r\n })\r\n\r\n let abbreviations = {} // eslint-disable-line prefer-const\r\n jsonObj.abbreviations.forEach(abbrItem => {\r\n abbreviations[abbrItem['@lang']] = abbrItem['@value'].replace('.', '')\r\n })\r\n\r\n let author = new Author(jsonObj.urn, titles, abbreviations) // eslint-disable-line prefer-const\r\n author.ID = this.extractIDFromURNAuthor(author.urn)\r\n let works = [] // eslint-disable-line prefer-const\r\n\r\n jsonObj.works.forEach(workItem => {\r\n works.push(this.createTextWork(author, workItem))\r\n })\r\n\r\n author.works = works\r\n return author\r\n }\r\n\r\n /**\r\n * Method extracts ID from the urn, if it is correct. Otherwise it returns null.\r\n * @returns {Number, null}\r\n */\r\n extractIDFromURNAuthor (urn) {\r\n const partsUrn = urn.split(':')\r\n if (Array.isArray(partsUrn) && partsUrn.length >= 4) {\r\n const workIDPart = partsUrn[3].indexOf('.') === -1 ? partsUrn[3] : partsUrn[3].substr(0, partsUrn[3].indexOf('.'))\r\n return parseInt(workIDPart.replace(this.defaultIDPrefix, ''))\r\n }\r\n return null\r\n }\r\n\r\n /**\r\n * Method returns TextWork for given jsonObj (from concordance API)\r\n * @param {Author} author - author of the textWork\r\n * @param {Object} jsonObj - json object with data of the TextWork\r\n * @returns {TextWork}\r\n */\r\n createTextWork (author, jsonObj) {\r\n let titles = {} // eslint-disable-line prefer-const\r\n jsonObj.title.forEach(titleItem => {\r\n titles[titleItem['@lang']] = titleItem['@value']\r\n })\r\n\r\n let abbreviations = {} // eslint-disable-line prefer-const\r\n jsonObj.abbreviations.forEach(abbrItem => {\r\n abbreviations[abbrItem['@lang']] = abbrItem['@value'].replace('.', '')\r\n })\r\n\r\n let textWork = new TextWork(author, jsonObj.urn, titles, abbreviations) // eslint-disable-line prefer-const\r\n textWork.ID = this.extractIDFromURNTextWork(textWork.urn)\r\n return textWork\r\n }\r\n\r\n /**\r\n * Method extracts ID from the urn, if it is correct. Otherwise it returns null.\r\n * @returns {Number, null}\r\n */\r\n extractIDFromURNTextWork (urn) {\r\n const partsUrn = urn.split(':')\r\n\r\n if (Array.isArray(partsUrn) && partsUrn.length >= 4) {\r\n const workIDPart = partsUrn[3].indexOf('.') === -1 ? null : partsUrn[3].substr(partsUrn[3].indexOf('.') + 1)\r\n\r\n return parseInt(workIDPart.replace(this.defaultIDPrefix, ''))\r\n }\r\n return null\r\n }\r\n\r\n /**\r\n * Creates WordUsageExample object from jsonObj, homonym, author, textWork and link from the adapter config\r\n * @param {Object} jsonObj - json object from concordance api\r\n * @param {Homonym} homonym - source homonym object\r\n * @param {Author} author - source author object, could be undefined\r\n * @param {TextWork} textWork - source textWork object, could be undefined\r\n * @param {String} passage - passage string, could be null\r\n * @returns {WordUsageExample}\r\n */\r\n createWordUsageExample (jsonObj, homonym, author, textWork, passage) {\r\n const source = this.config.sourceTextUrl + jsonObj.link\r\n let wordUsageExample = new WordUsageExample( // eslint-disable-line prefer-const\r\n LanguageModelFactory.getLanguageCodeFromId(homonym.languageID), jsonObj.target, jsonObj.left, jsonObj.right, source, jsonObj.cit\r\n )\r\n wordUsageExample.author = author\r\n wordUsageExample.textWork = textWork\r\n wordUsageExample.passage = passage\r\n wordUsageExample.homonym = homonym\r\n wordUsageExample.provider = this.provider\r\n\r\n return wordUsageExample\r\n }\r\n}\r\n\r\nexport default AlpheiosConcordanceAdapter\r\n","import BaseAdapter from '@clAdapters/adapters/base-adapter'\r\nimport DefaultConfig from '@clAdapters/adapters/detectlang/config.json'\r\nimport LangsList from '@clAdapters/adapters/detectlang/langs-list.json'\r\n\r\nexport default class DetectLangAdapter extends BaseAdapter {\r\n /**\r\n *\r\n * @param {Object} config - properties for the adapter\r\n */\r\n constructor (config = {}) {\r\n super()\r\n this.config = this.uploadConfig(config, DefaultConfig)\r\n this.sourceData = config.sourceData\r\n }\r\n\r\n /**\r\n *\r\n * @param {String} text - text for analysis\r\n * @returns {String} - langCode ISO 639-3 - a detected language\r\n */\r\n async getDetectedLangsList (text) {\r\n try {\r\n const requestParams = {\r\n method: 'POST',\r\n headers: { Authorization: `Bearer ${this.config.api}` }\r\n }\r\n\r\n const url = this.getUrl(text)\r\n if (!url) {\r\n this.addError(this.l10n.getMsg('DETECT_LANG_URL_ERROR'))\r\n return\r\n }\r\n\r\n let langsData\r\n if (this.sourceData) {\r\n langsData = this.sourceData\r\n } else {\r\n langsData = await this.fetch(url, { requestParams })\r\n }\r\n return this.chooseOneLanguage(langsData)\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('DETECT_LANG_FETCH_ERROR', { message: error.message }))\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param {String} text - text for analysis\r\n * @returns {String} - constructed URL\r\n */\r\n getUrl (text) {\r\n if (text) {\r\n return `${this.config.baseurl}?q=${encodeURIComponent(text)}`\r\n }\r\n return null\r\n }\r\n\r\n /**\r\n * The remote service returns the following format\r\n * { data: {\r\n detections: [\r\n { language: 'en', isReliable: true, confidence: 3.36 },\r\n { language: 'pt', isReliable: false, confidence: 3.36 },\r\n { language: 'eu', isReliable: false, confidence: 3.36 }\r\n ]\r\n }}\r\n * We need return only one the most reliable languageCode in ISO 639-3 format\r\n * @param {Object} langsData\r\n * @returns {String|null} lang code in ISO 639-3\r\n */\r\n chooseOneLanguage (langsData) {\r\n if (langsData && langsData.data && langsData.data.detections && langsData.data.detections.length > 0) {\r\n let finalLangs = langsData.data.detections\r\n .filter(langItem => langItem.isReliable)\r\n\r\n if (finalLangs.length === 0) {\r\n finalLangs = langsData.data.detections\r\n }\r\n\r\n if (finalLangs && (finalLangs.length > 0)) {\r\n const lang = finalLangs.sort((a, b) => a.confidence - b.confidence)\r\n .reverse()[0].language\r\n return LangsList[lang] ? LangsList[lang].langCode : lang\r\n }\r\n }\r\n return null\r\n }\r\n}\r\n","import BaseAdapter from '@clAdapters/adapters/base-adapter'\r\n\r\nimport { Collection } from 'alpheios-data-models'\r\n\r\nexport default class DTSAPIAdapter extends BaseAdapter {\r\n /**\r\n *\r\n * @param {Object} config - properties for the adapter\r\n */\r\n constructor (config = {}) {\r\n super()\r\n this.config = {\r\n baseUrl: config.baseUrl\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves collection\r\n * @param {String} id - @id for the collection for example urn:alpheios:latinLit, if it is null would be retrieved the root collections\r\n * @return {Collection}\r\n */\r\n async getCollection (id, page) {\r\n try {\r\n const url = this.getCollectionUrl(id, page)\r\n const collections = await this.fetch(url)\r\n if (collections) {\r\n return this.convertToCollections(collections)\r\n }\r\n return false\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('DTSAPI_FETCH_ERROR', { message: error.message }))\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves refs\r\n * @param {String} id - @id for the Resource for example urn:cts:latinLit:phi0472.phi001.alpheios-text-lat1\r\n * @param {Resource} resource - would be updated with retrieve data\r\n *\r\n */\r\n async getNavigation (id, resource) {\r\n try {\r\n const url = this.getNavigationUrl(id)\r\n const refs = await this.fetch(url)\r\n if (refs) {\r\n this.convertToRefs(refs, resource)\r\n return resource\r\n }\r\n return false\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('DTSAPI_FETCH_ERROR', { message: error.message }))\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves TEI document - by setting ref, start, end\r\n * @param {String} id - @id for the document for example urn:cts:latinLit:phi0472.phi001.alpheios-text-lat1\r\n * @param {Object} refParams\r\n * {String} ref - a ref for the passage (if defined start and end are ignored)\r\n * {String} start - a starting ref from it the text would be retrieved\r\n * {String} end - an ending ref till it the text would be retrieved (if it is not defined - would be retrieved till the end of the text)\r\n * @retunrs {String} - TEI xml document\r\n */\r\n async getDocument (id, refParams) {\r\n try {\r\n const url = this.getDocumentUrl(id, refParams)\r\n if (!url) { return }\r\n\r\n const document = await this.fetch(url, { type: 'xml' })\r\n return document\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('DTSAPI_FETCH_ERROR', { message: error.message }))\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param {String} id - @id\r\n * @returns {string} - url for getting collections\r\n */\r\n getCollectionUrl (id, page) {\r\n let url = `${this.config.baseUrl}collections`\r\n if (id) {\r\n url = `${url}?id=${id}`\r\n }\r\n if (page) {\r\n url = `${url}&page=${page}`\r\n }\r\n return url\r\n }\r\n\r\n /**\r\n *\r\n * @param {String} id - @id\r\n * @returns {string} - url for getting resources\r\n */\r\n getNavigationUrl (id) {\r\n let url = `${this.config.baseUrl}navigation`\r\n if (id) {\r\n url = `${url}?id=${id}`\r\n }\r\n return url\r\n }\r\n\r\n /**\r\n *\r\n * @param {String} id - @id\r\n * @returns {string} - url for getting document\r\n */\r\n getDocumentUrl (id, refParams) {\r\n let url = `${this.config.baseUrl}document`\r\n if (!id) {\r\n const message = 'getDocumentUrl - not defined id'\r\n this.addError(this.l10n.getMsg('DTSAPI_NO_OBLIGATORY_PROPS', { message }))\r\n return\r\n }\r\n\r\n url = `${url}?id=${id}`\r\n\r\n if (refParams) {\r\n const { ref, start, end } = refParams\r\n if (ref) { return `${url}&ref=${ref}` }\r\n\r\n url = `${url}&start=${start}`\r\n if (end) { return `${url}&end=${end}` }\r\n }\r\n return url\r\n }\r\n\r\n /**\r\n * Converts JSON object to Collection with members\r\n * @param {Object} collectionsJSON - JSON object retrieved from the remote\r\n * @returns {Collection}\r\n */\r\n convertToCollections (collectionsJSON) {\r\n const rootCollection = new Collection({\r\n totalItems: collectionsJSON.totalItems,\r\n title: collectionsJSON.title !== 'None' ? collectionsJSON.title : 'Alpheios',\r\n id: collectionsJSON['@id'] !== 'default' ? collectionsJSON['@id'] : null,\r\n baseUrl: this.config.baseUrl,\r\n description: collectionsJSON.description,\r\n pagination: collectionsJSON.view\r\n })\r\n\r\n if (collectionsJSON.member) {\r\n collectionsJSON.member.forEach(collJson => {\r\n rootCollection.addMember({\r\n totalItems: collJson.totalItems,\r\n title: collJson.title,\r\n id: collJson['@id'],\r\n type: collJson['@type'],\r\n description: collJson.description,\r\n baseUrl: this.config.baseUrl,\r\n pagination: collectionsJSON.view\r\n })\r\n })\r\n }\r\n return rootCollection\r\n }\r\n\r\n /**\r\n * Converts and uploads passage's refs to collection\r\n * @param {Array[Object]} refs - array of passage's refs - [ { ref: '1' }, { ref: '1a' } .. ]\r\n * @param {Collection} collection\r\n */\r\n convertToRefs (refs, resource) {\r\n let finalRefs\r\n\r\n if (refs['hydra:member'] && refs['hydra:member'].length > 0) {\r\n finalRefs = refs['hydra:member'].map(refObj => refObj.ref)\r\n } else if (refs.member && refs.member.length > 0) {\r\n finalRefs = refs.member.map(refObj => refObj['dts:ref'])\r\n }\r\n\r\n if (finalRefs) {\r\n resource.uploadRefs({\r\n refs: finalRefs,\r\n passage: refs.passage ? refs.passage : refs['dts:passage']\r\n })\r\n }\r\n return true\r\n }\r\n}\r\n","import { LanguageModelFactory as LMF, Definition, ResourceProvider } from 'alpheios-data-models'\r\nimport papaparse from 'papaparse'\r\n\r\nimport BaseAdapter from '@clAdapters/adapters/base-adapter'\r\nimport DefaultConfig from '@clAdapters/adapters/lexicons/config.json'\r\n\r\nlet cachedDefinitions = new Map() // eslint-disable-line prefer-const\r\nlet uploadStarted = new Map() // eslint-disable-line prefer-const\r\n\r\nclass AlpheiosLexiconsAdapter extends BaseAdapter {\r\n /**\r\n * Lexicons adapter uploads config data, defines default options and inits data\r\n * @param {Object} config - lexicon adapter properties\r\n * @param {Object} remoteConfig - remote lexicon service configuration\r\n * merges with and overrides the lexicon\r\n * settings in the local config.json,\r\n * if present and populated. An empty object\r\n * signifies that there are no overrides\r\n */\r\n constructor (config = {}, remoteConfig = {}) {\r\n super()\r\n this.config = config\r\n this.config.lexicons = this.uploadConfig(remoteConfig, DefaultConfig)\r\n this.options = { timeout: this.config.timeout ? this.config.timeout : 0 }\r\n this.async = Boolean(this.config.callBackEvtSuccess)\r\n }\r\n\r\n /**\r\n * This method retrieves short definitions for given homonym\r\n * @param {Homonym} homonym - homonym for retrieving definitions\r\n * @param {Object} options - options\r\n */\r\n async fetchShortDefs (homonym, options = {}) {\r\n await this.fetchDefinitions(homonym, options, 'short')\r\n }\r\n\r\n /**\r\n * This method retrieves full definitions for given homonym\r\n * @param {Homonym} homonym - homonym for retrieving definitions\r\n * @param {Object} options - options\r\n */\r\n async fetchFullDefs (homonym, options = {}) {\r\n await this.fetchDefinitions(homonym, options, 'full')\r\n }\r\n\r\n /**\r\n * This method creates Promise for getting short definitions, for being able to parallel requests\r\n * @param {Homonym} homonym - homonym for retrieving definitions\r\n * @param {String} urlKey - urlIndex for geting data from config\r\n */\r\n prepareShortDefPromise (homonym, urlKey) {\r\n const url = this.config.lexicons[urlKey].urls.short\r\n const requestType = 'shortDefs'\r\n\r\n const resCheckCached = this.checkCachedData(url)\r\n return resCheckCached.then(\r\n async (result) => {\r\n if (result) {\r\n const res = cachedDefinitions.get(url)\r\n await this.updateShortDefs(res, homonym, this.config.lexicons[urlKey])\r\n this.prepareSuccessCallback(requestType, homonym)\r\n }\r\n },\r\n error => {\r\n this.addError(this.l10n.getMsg('LEXICONS_FAILED_CACHED_DATA', { message: error.message }))\r\n this.prepareFailedCallback(requestType, homonym)\r\n }\r\n )\r\n }\r\n\r\n /**\r\n * This method creates Promise for getting full definitions, for being able to parallel requests\r\n * @param {Homonym} homonym - homonym for retrieving definitions\r\n * @param {String} urlKey - urlIndex for geting data from config\r\n */\r\n prepareFullDefPromise (homonym, urlKey) {\r\n const url = this.config.lexicons[urlKey].urls.index\r\n const requestType = 'fullDefs'\r\n\r\n const resCheckCached = this.checkCachedData(url)\r\n return resCheckCached.then(\r\n async (result) => {\r\n if (result) {\r\n const fullDefsRequests = this.collectFullDefURLs(cachedDefinitions.get(url), homonym, this.config.lexicons[urlKey])\r\n const resFullDefs = this.updateFullDefsAsync(fullDefsRequests, this.config.lexicons[urlKey], homonym)\r\n resFullDefs.catch(error => {\r\n this.addError(this.l10n.getMsg('LEXICONS_FAILED_CACHED_DATA', { message: error.message }))\r\n this.prepareFailedCallback(requestType, homonym)\r\n })\r\n }\r\n },\r\n error => {\r\n this.addError(this.l10n.getMsg('LEXICONS_FAILED_CACHED_DATA', { message: error.message }))\r\n this.prepareFailedCallback(requestType, homonym)\r\n }\r\n )\r\n }\r\n\r\n /**\r\n * This method checks if there is a callBackEvtSuccess defined and publish it if exists\r\n * @param {String} requestType - name of the request - shortDef and fullDef\r\n * @param {Homonym} homonym - homonym for retrieving definitions\r\n */\r\n prepareSuccessCallback (requestType, homonym) {\r\n if (this.config.callBackEvtSuccess) {\r\n this.config.callBackEvtSuccess.pub({\r\n requestType: requestType,\r\n homonym: homonym\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * This method checks if there is a callBackEvtFailed defined and publish it if exists\r\n * @param {String} requestType - name of the request - shortDef and fullDef\r\n * @param {Homonym} homonym - homonym for retrieving definitions\r\n */\r\n prepareFailedCallback (requestType, homonym) {\r\n if (this.config.callBackEvtFailed) {\r\n this.config.callBackEvtFailed.pub({\r\n requestType: requestType,\r\n homonym: homonym\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * This is a generic method that retrieves definitions for homonym\r\n * @param {Homonym} homonym - homonym for retrieving definitions\r\n * @param {Object} options - options\r\n * @param {Object} lookupFunction - type of definitions - short, full\r\n * @return {Boolean} - result of fetching\r\n */\r\n async fetchDefinitions (homonym, options, lookupFunction) {\r\n Object.assign(this.options, options)\r\n if (!this.options.allow || this.options.allow.length === 0) {\r\n this.addError(this.l10n.getMsg('LEXICONS_NO_ALLOWED_URL'))\r\n return\r\n }\r\n\r\n if (this.async) {\r\n return this.fetchDefsAsync(homonym, lookupFunction)\r\n } else {\r\n if (lookupFunction === 'short') {\r\n return this.fetchShortDefsSync(homonym)\r\n } else if (lookupFunction === 'full') {\r\n return this.fetchFullDefsSync(homonym)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * This is a sync method that retrieves short definitions for homonym synchronously\r\n * @param {Homonym} homonym - homonym for retrieving definitions\r\n */\r\n async fetchShortDefsSync (homonym) {\r\n try {\r\n const languageID = homonym.lexemes[0].lemma.languageID\r\n const urlKeys = this.getRequests(languageID).filter(url => this.options.allow.includes(url))\r\n\r\n for (const urlKey of urlKeys) {\r\n const url = this.config.lexicons[urlKey].urls.short\r\n const result = await this.checkCachedData(url)\r\n\r\n if (result) {\r\n const res = cachedDefinitions.get(url)\r\n await this.updateShortDefs(res, homonym, this.config.lexicons[urlKey])\r\n }\r\n }\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('LEXICONS_FAILED_CACHED_DATA', { message: error.message }))\r\n }\r\n }\r\n\r\n /**\r\n * This is a sync method that retrieves full definitions for homonym synchronously\r\n * @param {Homonym} homonym - homonym for retrieving definitions\r\n */\r\n async fetchFullDefsSync (homonym) {\r\n const languageID = homonym.lexemes[0].lemma.languageID\r\n const urlKeys = this.getRequests(languageID).filter(url => this.options.allow.includes(url))\r\n\r\n for (const urlKey of urlKeys) {\r\n const url = this.config.lexicons[urlKey].urls.index\r\n const result = await this.checkCachedData(url)\r\n\r\n if (result) {\r\n const fullDefsRequests = this.collectFullDefURLs(cachedDefinitions.get(url), homonym, this.config.lexicons[urlKey])\r\n await this.updateFullDefs(fullDefsRequests, this.config.lexicons[urlKey], homonym)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * This is an async method that retrieves definitions for homonym with getting result inside callbacks\r\n * @param {Homonym} homonym - homonym for retrieving definitions\r\n * @param {Object} lookupFunction - type of definitions - short, full\r\n * @return {Boolean} - result of fetching\r\n */\r\n\r\n fetchDefsAsync (homonym, lookupFunction) {\r\n const languageID = homonym.lexemes[0].lemma.languageID\r\n const urlKeys = this.getRequests(languageID).filter(url => this.options.allow.includes(url))\r\n\r\n for (const urlKey of urlKeys) {\r\n if (lookupFunction === 'short') {\r\n this.prepareShortDefPromise(homonym, urlKey, lookupFunction)\r\n }\r\n if (lookupFunction === 'full') {\r\n this.prepareFullDefPromise(homonym, urlKey, lookupFunction)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * This method checks if data from url is already cached and if not - it uploads data from url to cache\r\n * @param {String} url - url from what we need to cache data\r\n * @param {Null|Map|String} externalData - data that would be used as fixture for the url\r\n * @param {Boolean} skipFetch - when this check is true, then fetch would not be execute in any case, it is used for Full Definitions\r\n * @return {Boolean} - true - if cached is successed\r\n */\r\n async checkCachedData (url, externalData = null, skipFetch = false) {\r\n if (!externalData && skipFetch) {\r\n return false\r\n }\r\n if (!cachedDefinitions.has(url) && !uploadStarted.has(url)) {\r\n try {\r\n uploadStarted.set(url, true)\r\n\r\n let data = externalData\r\n if (!externalData) {\r\n const unparsed = await this.fetch(url, { type: 'xml', timeout: this.options.timeout })\r\n const parsed = papaparse.parse(unparsed, { quoteChar: '\\u{0000}', delimiter: '|' })\r\n data = this.fillMap(parsed.data)\r\n }\r\n\r\n cachedDefinitions.set(url, data)\r\n uploadStarted.set(url, false)\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('LEXICONS_FAILED_CACHED_DATA', { message: error.message }))\r\n uploadStarted.set(url, false)\r\n return false\r\n }\r\n } else if (uploadStarted.has(url) && uploadStarted.get(url)) {\r\n setTimeout(() => {\r\n this.checkCachedData(url)\r\n }, this.options.timeout)\r\n }\r\n return true\r\n }\r\n\r\n /**\r\n * This method searches for definitions in cached text, creates definitions and updates lexemes\r\n * @param {Map} data - cached data from definition's url\r\n * @param {Homonym} homonym - homonym we search definitions for\r\n * @param {Object} config - config data for url\r\n */\r\n async updateShortDefs (data, homonym, config) {\r\n const languageID = homonym.lexemes[0].lemma.languageID\r\n const model = LMF.getLanguageModel(languageID)\r\n\r\n for (let lexeme of homonym.lexemes) { // eslint-disable-line prefer-const\r\n const deftexts = this.lookupInDataIndex(data, lexeme.lemma, model)\r\n if (deftexts) {\r\n for (const d of deftexts) {\r\n const text = d.field1\r\n const providerCode = d.field2\r\n const format = config.format && config.format.short ? config.format.short : 'text/plain'\r\n try {\r\n let rightsText = config.rights\r\n let rightsUri = config.urls.short\r\n if (providerCode && config.rights_keys && config.rights_keys[providerCode]) {\r\n rightsUri = rightsUri + `#${providerCode}`\r\n rightsText = config.rights_keys[providerCode]\r\n }\r\n const provider = new ResourceProvider(rightsUri, rightsText)\r\n const def = new Definition(text, config.langs.target, format, lexeme.lemma.word)\r\n const definition = ResourceProvider.getProxy(provider, def)\r\n lexeme.meaning.appendShortDefs(definition)\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('LEXICONS_FAILED_APPEND_DEFS', { message: error.message }))\r\n continue\r\n }\r\n }\r\n } else {\r\n const url = config.urls.short\r\n this.addError(this.l10n.getMsg('LEXICONS_NO_DATA_FROM_URL', { url: url }))\r\n this.prepareFailedCallback('shortDefs', homonym)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * This method creates requests to full definitions url for each lexeme and given config\r\n * @param {Map} data - cached data from definition's index url\r\n * @param {Homonym} homonym - homonym we search definitions for\r\n * @param {Object} config - config data for url\r\n * @return {[String]} - array of urls for retrieving data\r\n */\r\n collectFullDefURLs (data, homonym, config) {\r\n const languageID = homonym.lexemes[0].lemma.languageID\r\n const model = LMF.getLanguageModel(languageID)\r\n const urlFull = config.urls.full\r\n\r\n if (!urlFull) {\r\n this.addError(this.l10n.getMsg('LEXICONS_NO_FULL_URL'))\r\n return\r\n }\r\n\r\n let requests = [] // eslint-disable-line prefer-const\r\n for (const lexeme of homonym.lexemes) {\r\n const ids = this.lookupInDataIndex(data, lexeme.lemma, model)\r\n if (urlFull && ids) {\r\n for (const id of ids) {\r\n requests.push({ url: `${urlFull}&n=${id.field1}`, lexeme: lexeme })\r\n }\r\n } else if (urlFull) {\r\n requests.push({ url: `${urlFull}&l=${encodeURIComponent(lexeme.lemma.word)}`, lexeme: lexeme })\r\n }\r\n }\r\n return requests\r\n }\r\n\r\n /**\r\n * This method fetches data from request and update homonym with full definition - it is made as Promises with calback to make it parallel\r\n * @param {[String]} fullDefsRequests - array of full definitions url\r\n * @param {Object} config - config data for url\r\n * @param {Homonym} homonym - homonym we search definitions for\r\n */\r\n async updateFullDefsAsync (fullDefsRequests, config, homonym) {\r\n for (let request of fullDefsRequests) { // eslint-disable-line prefer-const\r\n let fullDefDataRes\r\n if (cachedDefinitions.has(request.url)) {\r\n fullDefDataRes = new Promise((resolve, reject) => resolve(cachedDefinitions.get(request.url)))\r\n } else {\r\n fullDefDataRes = this.fetch(request.url, { type: 'xml' })\r\n }\r\n\r\n fullDefDataRes.then(\r\n async (fullDefData) => {\r\n if (fullDefData && fullDefData.match(/alph:error|alpheios-lex-error/)) {\r\n const error = fullDefData.match(/no entries found/i) ? 'No entries found.' : fullDefData\r\n this.addError(this.l10n.getMsg('LEXICONS_FAILED_CACHED_DATA', { message: error }))\r\n this.prepareFailedCallback('fullDefs', homonym)\r\n } else {\r\n const provider = new ResourceProvider(config.urls.full, config.rights)\r\n const def = new Definition(fullDefData, config.langs.target, 'text/plain', request.lexeme.lemma.word)\r\n const definition = ResourceProvider.getProxy(provider, def)\r\n request.lexeme.meaning.appendFullDefs(definition)\r\n this.prepareSuccessCallback('fullDefs', homonym)\r\n }\r\n },\r\n error => {\r\n this.addError(this.l10n.getMsg('LEXICONS_FAILED_APPEND_DEFS', { message: error.message }))\r\n }\r\n )\r\n }\r\n }\r\n\r\n /**\r\n * This method fetches data from request and update homonym with full definition synchronously\r\n * @param {[String]} fullDefsRequests - array of full definitions url\r\n * @param {Object} config - config data for url\r\n * @param {Homonym} homonym - homonym we search definitions for\r\n */\r\n async updateFullDefs (fullDefsRequests, config, homonym) {\r\n for (let request of fullDefsRequests) { // eslint-disable-line prefer-const\r\n let fullDefData\r\n if (cachedDefinitions.has(request.url)) {\r\n fullDefData = cachedDefinitions.get(request.url)\r\n } else {\r\n fullDefData = await this.fetch(request.url, { type: 'xml' })\r\n }\r\n\r\n try {\r\n if (fullDefData && fullDefData.match(/alph:error|alpheios-lex-error/)) {\r\n const error = fullDefData.match(/no entries found/i) ? 'No entries found.' : fullDefData\r\n this.addError(this.l10n.getMsg('LEXICONS_FAILED_CACHED_DATA', { message: error }))\r\n } else {\r\n const provider = new ResourceProvider(config.urls.full, config.rights)\r\n const def = new Definition(fullDefData, config.langs.target, 'text/plain', request.lexeme.lemma.word)\r\n const definition = ResourceProvider.getProxy(provider, def)\r\n request.lexeme.meaning.appendFullDefs(definition)\r\n }\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('LEXICONS_FAILED_APPEND_DEFS', { message: error.message }))\r\n }\r\n }\r\n }\r\n\r\n /*\r\n * This method retrieves urls from config for given languageCode\r\n * @param {Symbol} languageID\r\n */\r\n getRequests (languageID) {\r\n const languageCode = LMF.getLanguageCodeFromId(languageID)\r\n return Object.keys(this.config.lexicons).filter(url =>\r\n this.config.lexicons[url] && this.config.lexicons[url].langs &&\r\n this.config.lexicons[url].langs.source === languageCode)\r\n }\r\n\r\n /**\r\n * fills the data map with the rows from the parsed file\r\n * we need a method to do this because there may be homonyms in\r\n * the files\r\n * @param {string[]} rows\r\n * @return {Map} the filled map\r\n */\r\n fillMap (rows) {\r\n let data = new Map() // eslint-disable-line prefer-const\r\n for (const row of rows) {\r\n const def = { field1: row[1], field2: null }\r\n if (row.length > 2) {\r\n def.field2 = row[2]\r\n }\r\n if (data.has(row[0])) {\r\n data.get(row[0]).push(def)\r\n } else {\r\n data.set(row[0], [def])\r\n }\r\n }\r\n return data\r\n }\r\n\r\n /**\r\n * Lookup a Lemma object in an Alpheios v1 data index\r\n * @param {Map} data the data inddex\r\n * @param {Lemma} lemma the lemma to lookupInDataIndex\r\n * @param {LanguageModel} model a language model for language specific methods\r\n * @return {string} the index entry as a text string\r\n */\r\n lookupInDataIndex (data, lemma, model) {\r\n // legacy behavior from Alpheios lemma data file indices\r\n // first look to see if we explicitly have an instance of this lemma\r\n // with capitalization retained\r\n let found\r\n\r\n let alternatives = []\r\n let altEncodings = [] // eslint-disable-line prefer-const\r\n for (const l of [lemma.word, ...lemma.principalParts]) {\r\n alternatives.push(l)\r\n for (const a of model.alternateWordEncodings({ word: l, preserveCase: true })) {\r\n // we gather altEncodings separately because they should\r\n // be tried last after the lemma and principalParts in their\r\n // original form\r\n altEncodings.push(a)\r\n }\r\n const nosense = l.replace(/_?\\d+$/, '')\r\n if (l !== nosense) {\r\n alternatives.push(nosense)\r\n }\r\n }\r\n alternatives = [...alternatives, ...altEncodings]\r\n for (const lookup of alternatives) {\r\n // let's first just look for the word in its supplied case\r\n found = false\r\n if (data && lookup) {\r\n found = data.get(lookup)\r\n\r\n // and if we don't find it, then try lower case\r\n if (!found) {\r\n found = data.get(lookup.toLocaleLowerCase())\r\n }\r\n\r\n if (found) {\r\n found = this._lookupSpecial(data, lookup, found)\r\n }\r\n if (found) {\r\n break\r\n }\r\n }\r\n }\r\n\r\n // if we still don't have a match, we can do a last ditch check without\r\n // any diacritics at all in those languages that support it\r\n if (!found) {\r\n let lastAlt = [] // eslint-disable-line prefer-const\r\n for (const l of [lemma.word, ...lemma.principalParts]) {\r\n const strippedAll = model.alternateWordEncodings({\r\n word: l,\r\n encoding: 'strippedAll',\r\n preserveCase: true\r\n })\r\n if (strippedAll.length > 0) {\r\n lastAlt.push(strippedAll[0])\r\n }\r\n }\r\n if (data && lastAlt.length > 0) {\r\n for (const l of lastAlt) {\r\n for (let entry of data.entries()) { // eslint-disable-line prefer-const\r\n // a normal lookup in the dataset map would only return\r\n // an entry preceding with '@' as a result of the _lookupSpecial\r\n // test but because we are looping through and testing each entry\r\n // the test on case without any diacritics will find those matches\r\n // and we need to remove the @ flag to make sure it doesn't fail them\r\n const originalKey = entry[0].replace(/^@/, '')\r\n const value = entry[1]\r\n const strippedKey = model.alternateWordEncodings({\r\n word: originalKey,\r\n encoding: 'strippedAll',\r\n preserveCase: true\r\n })\r\n if (strippedKey.length > 0 && strippedKey[0] === l) {\r\n found = this._lookupSpecial(data, originalKey, value)\r\n if (found) {\r\n break\r\n }\r\n }\r\n }\r\n if (found) {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n return found\r\n }\r\n\r\n /**\r\n * When we created the lexicon indices we normalized the lemmas\r\n * as all lower case and applied some additional character normalizations\r\n * in the case of homonyms however, sometimes the normalization meant 1\r\n * index entry for two distinct words. In these cases, we created a \"special\"\r\n * syntax, whereby we set the value of the normalized index entry to '@'\r\n * which mean to look for the word under it's pre-normalized entry,\r\n * which was kept and made available in an entry prefixed with '@'\r\n * @param {Map} data the dataset to search in\r\n * @param {lookup} lookup the original pre-normalized lemma\r\n * @param {lemmas} the value returned by the lookup on the normalized lemma\r\n **/\r\n _lookupSpecial (data, lookup, lemmas) {\r\n if (lemmas.length === 1 && lemmas[0].field1 === '@') {\r\n return data.get(`@${lookup}`)\r\n } else {\r\n return lemmas\r\n }\r\n }\r\n}\r\n\r\nexport default AlpheiosLexiconsAdapter\r\n","import DefaultConfig from '@clAdapters/adapters/logeion/config.json'\r\nimport BaseAdapter from '@clAdapters/adapters/base-adapter'\r\n\r\nimport { LanguageModelFactory as LMF, Constants } from 'alpheios-data-models'\r\n\r\nclass AlpheiosLogeionAdapter extends BaseAdapter {\r\n /**\r\n * Adapter uploads config data\r\n * @param {Object} config - properties with higher priority\r\n */\r\n constructor (config = {}) {\r\n super()\r\n this.config = this.uploadConfig(config, DefaultConfig)\r\n this.limit = parseInt(this.config.limit)\r\n this.available = this.config.availableLangs.includes(this.config.lang)\r\n this.sourceData = config.sourceData\r\n this.fetchOptions = config.fetchOptions\r\n }\r\n\r\n /**\r\n * This method retrieves a list of words for lookup autocomplete\r\n * @param {String} text - text for retrieving variants\r\n * @return {Array} - array of words\r\n */\r\n async getWords (text) {\r\n try {\r\n const url = this.createFetchURL(text)\r\n if (!url) {\r\n this.addError(this.l10n.getMsg('LOGEION_FETCH_OPTIONS_ERROR'))\r\n return\r\n }\r\n\r\n if (this.sourceData) {\r\n return this.sourceData\r\n } else {\r\n const wordsVariants = await this.fetch(url)\r\n\r\n if (wordsVariants.words && Array.isArray(wordsVariants.words)) {\r\n return this.filterAndLimitWords(wordsVariants.words)\r\n } else {\r\n return []\r\n }\r\n }\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('LOGEION_FETCH_ERROR', { message: error.message }))\r\n }\r\n }\r\n\r\n /**\r\n * This method constructs full url for getting words\r\n * @param {String} text - text for retrieving variants\r\n * @return {String}\r\n */\r\n createFetchURL (text) {\r\n if (this.fetchOptions) {\r\n return `${this.fetchOptions.baseurl}?key=${this.fetchOptions.apikey}&q=${text}&lang=${this.logeionLangCode}`\r\n }\r\n }\r\n\r\n get logeionLangCode () {\r\n if (this.config.lang === Constants.STR_LANG_CODE_GRC) {\r\n return 'greek'\r\n } else if ([Constants.STR_LANG_CODE_LAT, Constants.STR_LANG_CODE_LA].includes(this.config.lang)) {\r\n return 'latin'\r\n }\r\n }\r\n\r\n /**\r\n * This method removes words from the other language - checks two variants - greek and the other\r\n * @param {[Array]} words - list of words that should be checked and filtered\r\n * @return {Array}\r\n */\r\n filterAndLimitWords (words) {\r\n const finalWords = []\r\n const model = LMF.getLanguageModelFromCode(this.config.lang)\r\n const otherModels = []\r\n this.config.availableLangs.forEach(lang => {\r\n const modelLang = LMF.getLanguageModelFromCode(lang)\r\n if (lang !== this.config.lang && modelLang.isValidUnicode) {\r\n otherModels.push(modelLang)\r\n }\r\n })\r\n\r\n for (let i = 0; i < words.length; i++) {\r\n if ((model.isValidUnicode && model.isValidUnicode(words[i])) ||\r\n (!model.isValidUnicode && otherModels.every(modelLang => !modelLang.isValidUnicode(words[i])))) {\r\n finalWords.push(words[i])\r\n }\r\n\r\n if (finalWords.length === this.limit) {\r\n break\r\n }\r\n }\r\n return finalWords\r\n }\r\n}\r\n\r\nexport default AlpheiosLogeionAdapter\r\n","import DefaultConfig from '@clAdapters/adapters/tokenization/config.json'\r\nimport BaseAdapter from '@clAdapters/adapters/base-adapter'\r\n\r\nimport { Options } from 'alpheios-data-models'\r\n\r\nclass AlpheiosTokenizationAdapter extends BaseAdapter {\r\n /**\r\n * Adapter uploads config data\r\n * @param {Object} config - properties with higher priority\r\n */\r\n constructor (config = {}) {\r\n super()\r\n this.config = this.uploadConfig(config, DefaultConfig)\r\n this.available = true\r\n this.sourceData = config.sourceData\r\n this.fetchOptions = this.config.fetchOptions\r\n this.storage = this.config.storage\r\n }\r\n\r\n /**\r\n * This method uploads segments data with tokens from tokenization service\r\n * @param {String} text - text for retrieving variants\r\n * @return {Array} - array of segments\r\n */\r\n async getTokens (text) {\r\n try {\r\n const requestParams = {\r\n method: 'POST',\r\n headers: this.defineContentType(),\r\n body: text\r\n }\r\n\r\n const url = this.createTokenizeFetchURL()\r\n if (!url) {\r\n this.addError(this.l10n.getMsg('TOKENIZATION_FETCH_OPTIONS_ERROR'))\r\n return\r\n }\r\n\r\n if (this.sourceData) {\r\n return this.sourceData\r\n } else {\r\n const segments = await this.fetch(url, { requestParams })\r\n return segments\r\n }\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('TOKENIZATION_FETCH_ERROR', { message: error.message }))\r\n }\r\n }\r\n\r\n /**\r\n * This method uploads default config data from tokenization service\r\n * @return {Array} - array of settings\r\n */\r\n async getConfig () {\r\n try {\r\n const url = this.createConfigFetchURL()\r\n if (!url) {\r\n this.addError(this.l10n.getMsg('TOKENIZATION_FETCH_OPTIONS_ERROR'))\r\n return\r\n }\r\n\r\n let configData\r\n if (this.sourceData) {\r\n configData = this.sourceData\r\n } else {\r\n configData = await this.fetch(url)\r\n }\r\n return this.formatSettings(configData)\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('TOKENIZATION_FETCH_ERROR', { message: error.message }))\r\n }\r\n }\r\n\r\n /**\r\n * Converts JSON response to Options for text and tei\r\n * @param {Object} configData - Response from config fetch request\r\n */\r\n formatSettings (configData) {\r\n return {\r\n tei: this.convertToOptions(configData, 'tei'),\r\n text: this.convertToOptions(configData, 'text')\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param {Object} configData Response from config fetch request\r\n * @param {String} textType - tei/text\r\n */\r\n convertToOptions (configData, textType) {\r\n const configDataPath = configData.paths[`/tokenize/${textType}`].post\r\n\r\n const exludeParameters = ['lang', 'direction']\r\n const dataFormatted = {\r\n domain: `alpheios-remote-tokenization-${textType}`,\r\n version: configData.info.version,\r\n description: configDataPath.description,\r\n items: {}\r\n }\r\n configDataPath.parameters.filter(param => (param.in === 'query') && !exludeParameters.includes(param.name)).forEach(param => {\r\n const result = {\r\n defaultValue: param.schema.default,\r\n labelText: param.description,\r\n select: Boolean(param.schema.enum),\r\n boolean: param.schema.type === 'boolean'\r\n }\r\n if (result.select) {\r\n result.values = param.schema.enum.map(val => { return { value: val, text: val } })\r\n }\r\n\r\n dataFormatted.items[param.name] = result\r\n })\r\n return new Options(dataFormatted, new this.storage(dataFormatted.domain)) // eslint-disable-line new-cap\r\n }\r\n\r\n /**\r\n * This method constructs full url for getting tokenize data\r\n * @return {String}\r\n */\r\n createTokenizeFetchURL () {\r\n if (this.fetchOptions) {\r\n if (!this.fetchOptions.lang || !this.fetchOptions.sourceType) {\r\n return\r\n }\r\n const exclude = ['baseUrl', 'sourceType', 'tokenizer']\r\n\r\n let url = `${this.fetchOptions.baseUrl}tokenize/${this.fetchOptions.sourceType}`\r\n let wasFirst = false\r\n\r\n Object.keys(this.fetchOptions).forEach(option => {\r\n if ((exclude.indexOf(option) === -1) && (this.fetchOptions[option] !== undefined)) {\r\n let sign = '&'\r\n if (!wasFirst) {\r\n sign = '?'\r\n wasFirst = true\r\n }\r\n url = `${url}${sign}${option}=${this.fetchOptions[option]}`\r\n }\r\n })\r\n\r\n return url\r\n }\r\n }\r\n\r\n /**\r\n * This method constructs full url for getting config data\r\n * @return {String}\r\n */\r\n createConfigFetchURL () {\r\n return this.fetchOptions.baseUrl\r\n }\r\n\r\n /**\r\n * This method defines type of Content-Type based on the source text type\r\n * @returns {Object} - { 'Content-Type': }\r\n */\r\n defineContentType () {\r\n if (this.fetchOptions.sourceType === 'tei') {\r\n return { 'Content-Type': 'application/xml' }\r\n }\r\n return { 'Content-Type': 'text/plain' }\r\n }\r\n}\r\n\r\nexport default AlpheiosTokenizationAdapter\r\n","import DefaultConfig from '@clAdapters/adapters/translations/config.json'\r\n\r\nimport { ResourceProvider, Translation, LanguageModelFactory as LMF } from 'alpheios-data-models'\r\nimport BaseAdapter from '@clAdapters/adapters/base-adapter'\r\n\r\nclass AlpheiosLemmaTranslationsAdapter extends BaseAdapter {\r\n /**\r\n * Adapter uploads config data, creates provider and inits mapLangUri (Object for storing data for available languages)\r\n * @param {Object} config - properties with higher priority\r\n */\r\n constructor (config = {}) {\r\n super()\r\n this.config = this.uploadConfig(config, DefaultConfig)\r\n this.mapLangUri = {}\r\n this.provider = new ResourceProvider(this.config.url, this.config.rights)\r\n this.sourceData = config.sourceData\r\n }\r\n\r\n /**\r\n * This method updates homonym with retrieved translations, if an error occurs it will be added to errors property of an adapter\r\n * @param {Homonym} homonym\r\n * @param {String} browserLang - language of the translation (for example its, spa)\r\n */\r\n async getTranslationsList (homonym, browserLang) {\r\n let lemmaList = [] // eslint-disable-line prefer-const\r\n if (!homonym || !homonym.lexemes) {\r\n this.addError(this.l10n.getMsg('TRANSLATION_INCORRECT_LEXEMES'))\r\n return\r\n }\r\n\r\n for (const lexeme of homonym.lexemes) {\r\n lemmaList.push(lexeme.lemma)\r\n }\r\n\r\n const inLang = LMF.getLanguageCodeFromId(homonym.lexemes[0].lemma.languageID)\r\n const outLang = this.config.langMap[browserLang] || this.config.defaultLang\r\n\r\n const input = this.prepareInput(lemmaList)\r\n\r\n if (!input) {\r\n this.addError(this.l10n.getMsg('TRANSLATION_INPUT_PREPARE_ERROR', { input: input.toString() }))\r\n return\r\n }\r\n\r\n try {\r\n const urlLang = await this.getAvailableResLang(inLang, outLang)\r\n if (urlLang && urlLang.constructor.name === 'AdapterError') {\r\n return\r\n }\r\n\r\n if (input && urlLang) {\r\n try {\r\n const url = urlLang + '?input=' + input\r\n let translationsList\r\n if (this.sourceData && this.sourceData.translations) {\r\n translationsList = this.sourceData.translations\r\n } else {\r\n translationsList = await this.fetch(url)\r\n }\r\n if (translationsList && translationsList.constructor.name === 'AdapterError') {\r\n return\r\n }\r\n\r\n for (const lemma of lemmaList) {\r\n Translation.loadTranslations(lemma, outLang, translationsList, this.provider)\r\n }\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('TRANSLATION_UNKNOWN_ERROR', { message: error.message }))\r\n }\r\n }\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('TRANSLATION_UNKNOWN_ERROR', { message: error.message }))\r\n }\r\n }\r\n\r\n /**\r\n * This method creates a string with unique lemma's words form lemmas list\r\n * @param {[Lemma]} lemmaList\r\n */\r\n prepareInput (lemmaList) {\r\n const inputList = lemmaList.map(lemma => encodeURIComponent(lemma.word)).filter((item, index, self) => self.indexOf(item) === index)\r\n return inputList.length > 0 ? inputList.join(',') : undefined\r\n }\r\n\r\n /**\r\n * This method fetches an url for translation\r\n * @param {String} inLang - translate from language (for example, lat)\r\n * @param {String} outLang - translate to language (for example, es, it)\r\n */\r\n async getAvailableResLang (inLang, outLang) {\r\n if (this.mapLangUri[inLang] === undefined) {\r\n const urlAvaLangsRes = this.config.url + '/' + inLang + '/'\r\n\r\n let unparsed\r\n\r\n if (!this.sourceData || !this.sourceData.langs) {\r\n unparsed = await this.fetch(urlAvaLangsRes)\r\n } else {\r\n unparsed = this.sourceData.langs\r\n }\r\n\r\n if (unparsed && unparsed.constructor.name === 'AdapterError') {\r\n return unparsed\r\n }\r\n\r\n let mapLangUri = {} // eslint-disable-line prefer-const\r\n unparsed.forEach(function (langItem) {\r\n mapLangUri[langItem.lang] = langItem.uri\r\n })\r\n\r\n if (Object.keys(mapLangUri).length > 0) {\r\n this.mapLangUri[inLang] = mapLangUri\r\n }\r\n }\r\n\r\n return this.mapLangUri[inLang] ? this.mapLangUri[inLang][outLang] : undefined\r\n }\r\n}\r\n\r\nexport default AlpheiosLemmaTranslationsAdapter\r\n","import { LanguageModelFactory as LMF, Lexeme, Feature, Constants } from 'alpheios-data-models'\r\n\r\nimport BaseAdapter from '@clAdapters/adapters/base-adapter'\r\nimport AlpheiosLexiconTransformer from '@clAdapters/transformers/alpheios-lexicon-transformer'\r\n\r\nimport DefaultConfig from '@clAdapters/adapters/tufts/config.json'\r\nimport EnginesSet from '@clAdapters/adapters/tufts/engines-set'\r\n\r\nclass AlpheiosTuftsAdapter extends BaseAdapter {\r\n /**\r\n * Tufts adapter uploads config data, uploads available engines and creates EnginesSet from them\r\n * @param {Object} config - properties with higher priority\r\n */\r\n constructor (config = {}) {\r\n super()\r\n this.config = this.uploadConfig(config, DefaultConfig)\r\n this.uploadEngines(this.config.engine)\r\n this.engineSet = new EnginesSet(this.engines)\r\n this.sourceData = config.sourceData\r\n }\r\n\r\n /**\r\n * This method creates engines object with the following format:\r\n * LanguageID: array of available engines from config files, for example Symbol(Latin): [\"whitakerLat\"]\r\n * @param {Object} engineConfig - engines config data\r\n */\r\n uploadEngines (engineConfig) {\r\n if (this.engine === undefined) {\r\n this.engines = {}\r\n }\r\n Object.keys(engineConfig).forEach(langCode => {\r\n const langID = LMF.getLanguageIdFromCode(langCode)\r\n\r\n if (langID !== Constants.LANG_UNDEFINED && this.engines[langID] === undefined) {\r\n this.engines[langID] = engineConfig[langCode]\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * This method gets data from adapter's engine. All errors are added to adapter.errors\r\n * @param {Symbol} languageID - languageID for getting homonym\r\n * @param {String} word - a word for getting homonym\r\n * Returned values:\r\n * - {Homonym} - if successed\r\n * - {undefined} - if failed\r\n */\r\n async getHomonym (languageID, word) {\r\n let res\r\n try {\r\n if (this.sourceData) {\r\n res = this.sourceData\r\n } else {\r\n const url = this.prepareRequestUrl(languageID, word)\r\n if (!url) {\r\n this.addError(this.l10n.getMsg('MORPH_TUFTS_NO_ENGINE_FOR_LANGUAGE', { languageID: languageID.toString() }))\r\n return\r\n }\r\n res = await this.fetch(url)\r\n if (res.constructor.name === 'AdapterError') {\r\n return\r\n }\r\n }\r\n\r\n if (res) {\r\n const mappingData = this.engineSet.getEngineByCode(languageID)\r\n if (!mappingData) {\r\n this.addError(this.l10n.getMsg('MORPH_TRANSFORM_NO_MAPPING_DATA', { language: languageID.toString() }))\r\n return\r\n }\r\n const transformAdapter = new AlpheiosLexiconTransformer(this, mappingData, this)\r\n let homonym = transformAdapter.transformData(res, word) // eslint-disable-line prefer-const\r\n\r\n if (!homonym) {\r\n this.addError(this.l10n.getMsg('MORPH_NO_HOMONYM', { word: word, languageID: languageID.toString() }))\r\n return\r\n }\r\n\r\n if (homonym && homonym.lexemes) {\r\n homonym.lexemes.sort(Lexeme.getSortByTwoLemmaFeatures(Feature.types.frequency, Feature.types.part))\r\n }\r\n return homonym\r\n }\r\n } catch (error) {\r\n this.addError(this.l10n.getMsg('MORPH_UNKNOWN_ERROR', { message: error.message }))\r\n }\r\n }\r\n\r\n /**\r\n * This method creates url with url from config and chosen engine\r\n * @param {Symbol} languageID - languageID for getting homonym\r\n * @param {String} word - a word for getting homonym\r\n * Returned url:\r\n * - {String} - constructed url for getting data from Tufts if engine is correct\r\n * - {null} - if engine is not correct\r\n */\r\n prepareRequestUrl (languageID, word) {\r\n const langCode = LMF.getLanguageCodeFromId(languageID)\r\n const engine = this.engineSet.getEngineByCode(languageID)\r\n\r\n if (engine) {\r\n const code = engine.engine\r\n return this.config.url.replace('r_WORD', encodeURIComponent(word)).replace('r_ENGINE', code).replace('r_LANG', langCode).replace('r_CLIENT', this.config.clientId)\r\n } else {\r\n return null\r\n }\r\n }\r\n}\r\n\r\nexport default AlpheiosTuftsAdapter\r\n","import ImportData from '@clAdapters/transformers/import-morph-data.js'\r\nimport * as Models from 'alpheios-data-models'\r\n\r\nconst data = new ImportData(Models.ArabicLanguageModel, 'aramorph')\r\n\r\nexport default data\r\n","import ImportData from '@clAdapters/transformers/import-morph-data.js'\r\nimport * as Models from 'alpheios-data-models'\r\n\r\nlet data = new ImportData(Models.PersianLanguageModel, 'hazm') // eslint-disable-line prefer-const\r\n\r\n// hazm allow all lemmas in without respect features as all we use it for is lemmatizing\r\ndata.setLexemeFilter(function (lexeme) { return Boolean(lexeme.lemma.word) })\r\n\r\nexport default data\r\n","import ImportData from '@clAdapters/transformers/import-morph-data.js'\r\nimport * as Models from 'alpheios-data-models'\r\n\r\nlet data = new ImportData(Models.GreekLanguageModel, 'morpheusgrc') // eslint-disable-line prefer-const\r\n\r\ndata.inflectionOverrides = {\r\n // Morpheus uses 'irregular' as pofs for some pronouns, override with lemma\r\n // the dictionary entry's conjugation if it's available\r\n [Models.Feature.types.part]: (i, ls) => {\r\n return {\r\n withLemma: i[Models.Feature.types.part].value === Models.Constants.TYPE_IRREGULAR && ls.some(l => l.features[Models.Feature.types.part].value === Models.Constants.POFS_PRONOUN),\r\n withFeature: null\r\n }\r\n },\r\n // for some irregular adjectives, the compartive is only specified in the morph flags\r\n [Models.Feature.types.comparison]: (i, ls) => {\r\n const retVal = {\r\n withLemma: false,\r\n withFeature: null\r\n }\r\n if (i[Models.Feature.types.morph].value === 'irreg_comp' &&\r\n ls.some(l => l.features[Models.Feature.types.part].value === Models.Constants.POFS_ADJECTIVE)) {\r\n retVal.withFeature = new Models.Feature(Models.Feature.types.comparison, Models.Constants.COMP_COMPARITIVE, Models.GreekLanguageModel.languageID)\r\n } else if (i[Models.Feature.types.morph].value === 'irreg_superl' &&\r\n ls.some(l => l.features[Models.Feature.types.part].value === Models.Constants.POFS_ADJECTIVE)) {\r\n retVal.withFeature = new Models.Feature(Models.Feature.types.comparison, Models.Constants.COMP_SUPERLATIVE, Models.GreekLanguageModel.languageID)\r\n }\r\n return retVal\r\n }\r\n}\r\n/*\r\nBelow are value conversion maps for each grammatical feature to be parsed.\r\nFormat:\r\ndata.addFeature(typeName).add(providerValueName, LibValueName);\r\n(functions are chainable)\r\nTypes and values that are unknown (undefined) will be skipped during parsing.\r\n */\r\n\r\ndata.addFeature(Models.Feature.types.gender).importer\r\n .map('masculine feminine', [[Models.Constants.GEND_MASCULINE, 1], [Models.Constants.GEND_FEMININE, 2]])\r\n\r\ndata.addFeature(Models.Feature.types.declension).importer\r\n .map('1st & 2nd', [[Models.Constants.ORD_1ST, 1], [Models.Constants.ORD_2ND, 2]])\r\n\r\ndata.setPropertyParser(function (propertyName, propertyValue, inputElem) {\r\n let propertyValues = []\r\n if (propertyName === 'decl') {\r\n propertyValues = propertyValue.split('&').map((p) => p.trim())\r\n } else if (propertyName === 'comp' && propertyValue === 'positive') {\r\n propertyValues = []\r\n } else if (propertyName === 'pofs' && propertyValue === 'irregular' &&\r\n inputElem.hdwd && inputElem.hdwd.$ === 'τίς') {\r\n propertyValues = [Models.Constants.POFS_PRONOUN]\r\n } else {\r\n propertyValues = [propertyValue]\r\n }\r\n return propertyValues\r\n})\r\n\r\nexport default data\r\n","import ImportData from '@clAdapters/transformers/import-morph-data.js'\r\nimport * as Models from 'alpheios-data-models'\r\n\r\nconst data = new ImportData(Models.SyriacLanguageModel, 'sedra')\r\n\r\n// allow lexemes if they have at least a meaning or a part of speech\r\ndata.setLexemeFilter(function (lexeme) {\r\n return Boolean(lexeme.meaning.shortDefs.length > 0 ||\r\n lexeme.lemma.features[Models.Feature.types.part])\r\n})\r\n\r\n//\r\ndata.setMeaningParser(function (meaning, targetWord) {\r\n const lang = meaning.lang ? meaning.lang : Models.Constants.STR_LANG_CODE_ENG\r\n const meaningText = meaning.$ || ''\r\n return new Models.Definition(meaningText, lang, 'text/html', targetWord)\r\n})\r\n\r\ndata.setPropertyParser(function (propertyName, propertyValue, inputElem) {\r\n let propertyValues = []\r\n if (propertyName === 'paradigm') {\r\n // state has some extra \"\" around values\r\n propertyValues = [propertyValue.replace(/\"/g, '')]\r\n } else if (propertyName === 'src') {\r\n // replace the '[from sedra.bethmardutho.org, accessed on XXXXX]' as duplicative\r\n // with rights\r\n propertyValues = [propertyValue.replace(/\\[from sedra.bethmardutho.org, .*?\\]/g, '')]\r\n } else {\r\n propertyValues = [propertyValue]\r\n }\r\n return propertyValues\r\n})\r\n\r\nexport default data\r\n","import ImportData from '@clAdapters/transformers/import-morph-data.js'\r\nimport * as Models from 'alpheios-data-models'\r\n\r\nconst data = new ImportData(Models.GeezLanguageModel, 'traces')\r\n\r\nexport default data\r\n","import ImportData from '@clAdapters/transformers/import-morph-data.js'\r\nimport * as Models from 'alpheios-data-models'\r\n\r\nconst data = new ImportData(Models.LatinLanguageModel, 'whitakerLat')\r\n\r\n// Whitaker's has weird inflection data for conjugation, we prefer\r\n// the dictionary entry's conjugation if it's available\r\ndata.inflectionOverrides = {\n [Models.Feature.types.conjugation]: (i, ls) => {\r\n return {\r\n withLemma: true,\r\n withFeature: null\r\n }\r\n }\r\n}\r\n\r\n/*\r\nBelow are value conversion maps for each grammatical feature to be parsed.\r\nFormat:\r\ndata.addFeature(typeName).add(providerValueName, LibValueName);\r\n(functions are chainable)\r\nTypes and values that are unknown (undefined) will be skipped during parsing.\r\n */\r\n\r\n// TODO - per inflections.xsd\r\n// Whitakers Words uses packon and tackon in POFS, not sure how\r\n\r\ndata.addFeature(Models.Feature.types.gender).importer\r\n .map('common', [[Models.Constants.GEND_MASCULINE, 1], [Models.Constants.GEND_FEMININE, 2]])\r\n .map('all', [[Models.Constants.GEND_MASCULINE, 1], [Models.Constants.GEND_FEMININE, 2], [Models.Constants.GEND_NEUTER, 3]])\r\n\r\ndata.addFeature(Models.Feature.types.tense).importer\r\n .map('future_perfect', Models.Constants.TENSE_FUTURE_PERFECT)\r\n\r\ndata.setPropertyParser(function (propertyName, propertyValue, inputElem) {\r\n let propertyValues = []\r\n if (propertyName === 'decl') {\r\n propertyValues = propertyValue.split('&').map((p) => p.trim())\r\n } else if (propertyName === 'comp' && propertyValue === 'positive') {\r\n propertyValues = []\r\n } else if (propertyName === 'conj' && propertyValue.match(/5th|6th|7th|8th/)) {\r\n // these are irregular verbs\r\n propertyValues = [Models.Constants.TYPE_IRREGULAR]\r\n } else {\r\n propertyValues = [propertyValue]\r\n }\r\n return propertyValues\r\n})\r\n\r\ndata.setLexemeAggregator(function (lexemeSet, inflections) {\r\n let lexemes = [] // eslint-disable-line prefer-const\r\n for (let lex of lexemeSet) { // eslint-disable-line prefer-const\r\n if (this.reportLexeme(lex)) {\r\n if (lex.meaning.shortDefs.length === 0 && lexemeSet.length > 1) {\r\n for (let otherLex of lexemeSet) { // eslint-disable-line prefer-const\r\n // same headword and same part of speech\r\n if (otherLex.meaning.shortDefs.length > 0 && otherLex.lemma.isFullHomonym(lex.lemma)) {\r\n let featuresMatch = true\r\n for (const feature of Object.entries(lex.lemma.features)) {\r\n // check the other features excluding frequency, source and age\r\n if ((feature[0] !== Models.Feature.types.frequency) &&\r\n (feature[0] !== Models.Feature.types.source) &&\r\n (feature[0] !== Models.Feature.types.age) &&\r\n !(feature[1].isEqual(otherLex.lemma.features[feature[0]]))) {\r\n featuresMatch = false\r\n break\r\n }\r\n }\r\n // same lemma, same features, must be principal parts mismatch\r\n if (featuresMatch) {\r\n // if this lemma has a higher frequency, make it the main lemma of the Lexeme and the existing one an alternative\r\n if (lex.lemma.features[Models.Feature.types.frequency].compareTo(otherLex.lemma.features[Models.Feature.types.frequency]) < 1) {\r\n otherLex.addAltLemma(otherLex.lemma)\r\n otherLex.lemma = lex.lemma\r\n } else {\r\n // otherwise just add it to the alternative lemmas\r\n otherLex.addAltLemma(lex.lemma)\r\n }\r\n } else {\r\n lex.inflections = inflections.map(inflection => inflection.clone())\r\n lexemes.push(lex)\r\n }\r\n }\r\n }\r\n } else {\r\n lex.inflections = inflections.map(inflection => inflection.clone())\r\n lexemes.push(lex)\r\n }\r\n }\r\n }\r\n return lexemes\r\n}\r\n)\r\n\r\ndata.setLemmaParser(function (lemma) {\r\n // Whitaker's Words returns principal parts for some words\r\n // and sometimes has a space separted stem and suffix\r\n let parsed, primary\r\n let parts = [] // eslint-disable-line prefer-const\r\n const lemmas = lemma.split(', ')\r\n for (const [index, l] of lemmas.entries()) {\r\n const normalized = l.split(' ')[0]\r\n if (index === 0) {\r\n primary = normalized\r\n }\r\n parts.push(normalized)\r\n }\r\n if (primary) {\r\n parsed = new Models.Lemma(primary, this.model.languageCode, parts)\r\n }\r\n\r\n return parsed\r\n})\r\n\r\nexport default data\r\n","import Whitakers from '@clAdapters/adapters/tufts/engine/whitakers'\r\nimport Morpheusgrc from '@clAdapters/adapters/tufts/engine/morpheusgrc'\r\nimport Aramorph from '@clAdapters/adapters/tufts/engine/aramorph'\r\nimport Hazm from '@clAdapters/adapters/tufts/engine/hazm'\r\nimport Traces from '@clAdapters/adapters/tufts/engine/traces'\r\nimport Sedra from '@clAdapters/adapters/tufts/engine/sedra'\r\n\r\nimport { LanguageModelFactory as LMF } from 'alpheios-data-models'\r\n\r\nclass EnginesSet {\r\n /**\r\n * @param {Object} adapterConfigEngines - it is the following format - Symbol(Latin): [\"whitakerLat\"]\r\n */\r\n constructor (adapterConfigEngines) {\r\n this.engine = adapterConfigEngines\r\n }\r\n\r\n /**\r\n * This method returns engine class by languageID\r\n * @param {Symbol} languageID\r\n * @return {Engine Class}\r\n */\r\n getEngineByCode (languageID) {\r\n if (this.engine[languageID]) {\r\n const engineCode = this.engine[languageID][0]\r\n const allEngines = new Map(([Whitakers, Morpheusgrc, Aramorph, Hazm, Traces, Sedra]).map((e) => { return [e.engine, e] }))\r\n return allEngines.get(engineCode)\r\n }\r\n }\r\n\r\n /**\r\n * This method returns engine class by languageCode\r\n * @param {String} languageCode\r\n * @return {Engine Class}\r\n */\r\n getEngineByCodeFromLangCode (languageCode) {\r\n const languageID = LMF.getLanguageIdFromCode(languageCode)\r\n return this.getEngineByCode(languageID)\r\n }\r\n}\r\n\r\nexport default EnginesSet\r\n","import AlpheiosTuftsAdapter from '@clAdapters/adapters/tufts/adapter'\r\nimport AlpheiosChineseLocAdapter from '@clAdapters/adapters/chineseloc/adapter'\r\nimport AlpheiosTreebankAdapter from '@clAdapters/adapters/alpheiostb/adapter'\r\nimport AlpheiosLemmaTranslationsAdapter from '@clAdapters/adapters/translations/adapter'\r\nimport AlpheiosLexiconsAdapter from '@clAdapters/adapters/lexicons/adapter'\r\nimport AlpheiosConcordanceAdapter from '@clAdapters/adapters/concordance/adapter'\r\nimport ArethusaTreebankAdapter from '@clAdapters/adapters/arethusa/adapter'\r\nimport AlpheiosLogeionAdapter from '@clAdapters/adapters/logeion/adapter'\r\nimport AlpheiosTokenizationAdapter from '@clAdapters/adapters/tokenization/adapter'\r\nimport DTSAPIAdapter from '@clAdapters/adapters/dtsapi/adapter'\r\nimport DetectLangAdapter from '@clAdapters/adapters/detectlang/adapter'\r\n\r\nimport WrongMethodError from '@clAdapters/errors/wrong-method-error'\r\nimport NoRequiredParamError from '@clAdapters/errors/no-required-param-error'\r\n\r\nimport AdaptersConfig from '@clAdapters/adapters/adapters-config.json'\r\n\r\nlet cachedConfig = new Map() // eslint-disable-line prefer-const\r\nlet cachedAdaptersList = new Map() // eslint-disable-line prefer-const\r\n\r\nclass ClientAdapters {\r\n /**\r\n * it is used for uploading data from AdaptersConfig to cachedConfig and CachedAdaptersList\r\n */\r\n static init () {\r\n if (cachedConfig.size === 0) {\r\n for (const category in AdaptersConfig) {\r\n let adapters = {} // eslint-disable-line prefer-const\r\n for (const adapterKey in AdaptersConfig[category]) {\r\n const adapterData = AdaptersConfig[category][adapterKey]\r\n\r\n adapters[adapterKey] = {\r\n adapter: ClientAdapters[adapterData.adapter],\r\n methods: adapterData.methods,\r\n params: adapterData.params\r\n }\r\n }\r\n cachedConfig.set(category, adapters)\r\n }\r\n\r\n for (const key of cachedConfig.keys()) {\r\n const res = {}\r\n Object.keys(cachedConfig.get(key)).forEach(typeAdapter => {\r\n res[typeAdapter] = cachedConfig.get(key)[typeAdapter].adapter\r\n })\r\n\r\n cachedAdaptersList.set(key, res)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Additional abstraction layer for structuring adapters\r\n * it is used for retrieving data from morphology category\r\n */\r\n static get morphology () {\r\n ClientAdapters.init()\r\n return cachedAdaptersList.get('morphology')\r\n }\r\n\r\n /**\r\n * it is used for retrieving data from lexicon category\r\n */\r\n static get lexicon () {\r\n ClientAdapters.init()\r\n return cachedAdaptersList.get('lexicon')\r\n }\r\n\r\n /**\r\n * it is used for retrieving data from lemmatranslation category\r\n */\r\n static get lemmatranslation () {\r\n ClientAdapters.init()\r\n return cachedAdaptersList.get('lemmatranslation')\r\n }\r\n\r\n static get wordusageExamples () {\r\n ClientAdapters.init()\r\n return cachedAdaptersList.get('wordusageExamples')\r\n }\r\n\r\n static get autocompleteWords () {\r\n ClientAdapters.init()\r\n return cachedAdaptersList.get('autocompleteWords')\r\n }\r\n\r\n static get tokenizationGroup () {\r\n ClientAdapters.init()\r\n return cachedAdaptersList.get('tokenizationGroup')\r\n }\r\n\r\n static get dtsapiGroup () {\r\n ClientAdapters.init()\r\n return cachedAdaptersList.get('dtsapiGroup')\r\n }\r\n\r\n static get detectlangGroup () {\r\n ClientAdapters.init()\r\n return cachedAdaptersList.get('detectlangGroup')\r\n }\r\n\r\n /**\r\n * This method checks if given method is registered in config for category.adapterName\r\n * @param {String} category - category name - morphology, lemmatranslation, lexicon\r\n * @param {String} adapterName - adapter name - tufts, treebankAdapter, alpheios\r\n * @param {String} methodName - method name - method name that should be checked, for example getHomonym, fetchTranslations and etc.\r\n */\r\n static checkMethod (category, adapterName, methodName) {\r\n if (!cachedConfig.get(category)[adapterName].methods.includes(methodName)) {\r\n throw new WrongMethodError(category, adapterName, methodName)\r\n }\r\n }\r\n\r\n /**\r\n * This method checks if given array with parameteres doesn't have required parameters, registered in config file\r\n * @param {[String]} params - array of parameter's names for being checked\r\n * @param {String} category - category name - morphology, lemmatranslation, lexicon\r\n * @param {String} adapterName - adapter name - tufts, treebankAdapter, alpheios\r\n * @param {String} methodName - method name - method name that should be checked, for example getHomonym, fetchTranslations and etc.\r\n */\r\n static checkParam (params, category, adapterName, methodName) {\r\n if (cachedConfig.get(category)[adapterName].params) {\r\n cachedConfig.get(category)[adapterName].params[methodName].forEach(paramName => {\r\n // Param values other than `undefined` such as `null` or empty strings could be valid values\r\n if (params && typeof params[paramName] === 'undefined') {\r\n throw new NoRequiredParamError(category, adapterName, methodName, paramName)\r\n }\r\n })\r\n }\r\n }\r\n\r\n /*\r\n * This method executes both checks for given options - checks method and given parameters from options\r\n * @param {String} category - category name - morphology, lemmatranslation, lexicon\r\n * @param {String} adapterName - adapter name - tufts, treebankAdapter, alpheios\r\n * @param {Object} options - method name - method name that should be checked, for example getHomonym, fetchTranslations and etc.\r\n */\r\n static checkMethodParam (category, adapterName, options) {\r\n ClientAdapters.checkMethod(category, adapterName, options.method)\r\n ClientAdapters.checkParam(options.params, category, adapterName, options.method)\r\n }\r\n\r\n /**\r\n * it is used for getting data from morph adapter\r\n * @param {Object} options - object contains parametes:\r\n * @param {String} options.method - for now one value - \"getHomonym\" - action that should be done wth the help of adapter\r\n * @param {Symbol} options.params.languageID - languageID value for the word\r\n * @param {String} options.params.word - target word for what we will receive morph data\r\n * Returned values:\r\n * - throw an Error if there is used a wrong metod or not enough required parameters\r\n * - null, method is registered in configuration file but not implemented here\r\n * - { result: Homonym, errors: [AdapterError] }\r\n */\r\n static async maAdapter (options) {\r\n ClientAdapters.checkMethodParam('morphology', 'tufts', options)\r\n\r\n const localMaAdapter = new AlpheiosTuftsAdapter({\r\n category: 'morphology',\r\n adapterName: 'tufts',\r\n method: options.method,\r\n clientId: options.clientId,\r\n sourceData: options.sourceData\r\n })\r\n\r\n if (options.method === 'getHomonym') {\r\n const homonym = await localMaAdapter.getHomonym(options.params.languageID, options.params.word)\r\n return { result: homonym, errors: localMaAdapter.errors }\r\n }\r\n return null\r\n }\r\n\r\n static async chineseAdapter (options) {\r\n ClientAdapters.checkMethodParam('morphology', 'chineseloc', options)\r\n\r\n const localChineseAdapter = new AlpheiosChineseLocAdapter({\r\n category: 'morphology',\r\n adapterName: 'chineseloc',\r\n method: options.method,\r\n // A URL of a CEDICT service\r\n serviceUrl: options.serviceUrl\r\n })\r\n\r\n if (options.method === 'getHomonym') {\r\n const homonym = await localChineseAdapter.getHomonym(options.params.word, options.params.checkContextForward)\r\n return { result: homonym, errors: localChineseAdapter.errors }\r\n }\r\n if (options.method === 'loadData') {\r\n const result = await localChineseAdapter.loadData(options.params.timeout)\r\n return { result, errors: localChineseAdapter.errors }\r\n }\r\n return null\r\n }\r\n\r\n /**\r\n * it is used for getting data from treebank adapter\r\n * @param {Object} options - object contains parametes:\r\n * @param {String} options.method - for now one value - \"getHomonym\" - action that should be done wth the help of adapter\r\n * @param {Symbol} options.params.languageID - languageID value for the word\r\n * @param {String} options.params.wordref - target wordref for getting data from treebank adapter\r\n * Returned values:\r\n * - throw an Error if there is used a wrong metod or not enough required parameters\r\n * - null, method is registered in configuration file but not implemented here\r\n * - { result: Homonym, errors: [AdapterError] }\r\n*/\r\n\r\n static async tbAdapter (options) {\r\n ClientAdapters.checkMethodParam('morphology', 'alpheiosTreebank', options)\r\n\r\n const localTbAdapter = new AlpheiosTreebankAdapter({\r\n category: 'morphology',\r\n adapterName: 'alpheiosTreebank',\r\n method: options.method,\r\n clientId: options.clientId\r\n })\r\n if (options.method === 'getHomonym') {\r\n const homonym = await localTbAdapter.getHomonym(options.params.languageID, options.params.wordref)\r\n return { result: homonym, errors: localTbAdapter.errors }\r\n }\r\n return null\r\n }\r\n\r\n /**\r\n * it is used for getting data from arethusa\r\n * @param {Object} options - object contains parameters:\r\n * @param {String} options.method - for now one value - \"getHomonym\" - action that should be done wth the help of adapter\r\n * @param {Symbol} options.params.languageID - languageID value for the word\r\n * @param {Symbol} options.params.word - target word\r\n * @param {String} options.params.provider - the provider url for Arethusa\r\n * @param {String} options.params.sentenceId - the sentence identifier\r\n * @param {String} options.params.wordId - the word identifier\r\n * Returned values:\r\n * - throw an Error if there is used a wrong metod or not enough required parameters\r\n * - null, method is registered in configuration file but not implemented here\r\n * - { result: Homonym, errors: [AdapterError] }\r\n*/\r\n\r\n static async arethusaAdapter (options) {\r\n ClientAdapters.checkMethodParam('morphology', 'arethusaTreebank', options)\r\n\r\n const localAdapter = new ArethusaTreebankAdapter({\r\n category: 'morphology',\r\n adapterName: 'arethusaTreebank',\r\n method: options.method,\r\n clientId: options.clientId\r\n })\r\n if (options.method === 'getHomonym') {\r\n const homonym = await localAdapter.getHomonym(options.params.languageID,\r\n options.params.word,\r\n options.params.provider,\r\n options.params.sentenceId,\r\n options.params.wordId)\r\n return { result: homonym, errors: localAdapter.errors }\r\n }\r\n if (options.method === 'refreshView') {\r\n const resp = await localAdapter.refreshView(options.params.provider)\r\n return { result: resp, errors: localAdapter.errors }\r\n }\r\n if (options.method === 'gotoSentence') {\r\n const resp = await localAdapter.gotoSentence(\r\n options.params.provider,\r\n options.params.sentenceId,\r\n options.params.wordIds\r\n )\r\n return { result: resp, errors: localAdapter.errors }\r\n }\r\n if (options.method === 'findWord') {\r\n const resp = await localAdapter.findWord(\r\n options.params.provider,\r\n options.params.word,\r\n options.params.prefix,\r\n options.params.suffix,\r\n options.params.sentenceId\r\n )\r\n return { result: resp, errors: localAdapter.errors }\r\n }\r\n return null\r\n }\r\n\r\n /**\r\n * it is used for getting data from translations adapter\r\n * @param {Object} options - object contains parametes:\r\n * @param {String} options.method - for now one value - \"fetchTranslations\" - action that should be done wth the help of adapter\r\n * @param {Homonym} options.params.homonym - homonym for retrieving translations\r\n * @param {String} options.params.browserLang - language for translations\r\n * Returned values:\r\n * - throw an Error if there is used a wrong metod or not enough required parameters\r\n * - null, method is registered in configuration file but not implemented here\r\n * - { result: Boolean, errors: [AdapterError] }\r\n*/\r\n static async lemmaTranslations (options) {\r\n ClientAdapters.checkMethodParam('lemmatranslation', 'alpheios', options)\r\n\r\n const localLemmasAdapter = new AlpheiosLemmaTranslationsAdapter({\r\n category: 'lemmatranslation',\r\n adapterName: 'alpheios',\r\n method: options.method,\r\n clientId: options.clientId,\r\n sourceData: options.sourceData\r\n })\r\n\r\n if (options.method === 'fetchTranslations') {\r\n await localLemmasAdapter.getTranslationsList(options.params.homonym, options.params.browserLang)\r\n return { errors: localLemmasAdapter.errors }\r\n }\r\n return null\r\n }\r\n\r\n static async wordUsageExamples (options) {\r\n ClientAdapters.checkMethodParam('wordusageExamples', 'concordance', options)\r\n\r\n const localLemmasAdapter = new AlpheiosConcordanceAdapter({\r\n category: 'wordUsage',\r\n adapterName: 'concordance',\r\n method: options.method,\r\n clientId: options.clientId\r\n })\r\n\r\n if (options.method === 'getAuthorsWorks') {\r\n const res = await localLemmasAdapter.getAuthorsWorks()\r\n return { result: res, errors: localLemmasAdapter.errors }\r\n }\r\n\r\n if (options.method === 'getWordUsageExamples') {\r\n const res = await localLemmasAdapter.getWordUsageExamples(options.params.homonym, options.params.filters, options.params.pagination, options.params.sort)\r\n return { result: res, errors: localLemmasAdapter.errors }\r\n }\r\n\r\n return null\r\n }\r\n\r\n /**\r\n * it is used for getting data from lexicons adapter\r\n * @param {Object} options - object contains parametes:\r\n * @param {String} options.method - action that should be done wth the help of adapter - fetchShortDefs and fetchFullDefs\r\n * @param {Object} options.config - lexicon configuration supplied by client\r\n * @param {Homonym} options.params.homonym - homonym for retrieving translations\r\n * @param {Object(allow: [String])} options.params.opts - an object with array of urls for dictionaries\r\n * @param {PSEvent} options.params.callBackEvtSuccess - an event that should be published on success result\r\n * @param {PSEvent} options.params.callBackEvtFailed - an event that should be published on failed result\r\n * Returned values:\r\n * - throw an Error if there is used a wrong metod or not enough required parameters\r\n * - null, method is registered in configuration file but not implemented here\r\n * - { result: Boolean, errors: [AdapterError] }\r\n*/\r\n static async lexicons (options) {\r\n ClientAdapters.checkMethodParam('lexicon', 'alpheios', options)\r\n\r\n const adapterParams = {\r\n category: 'lexicon',\r\n adapterName: 'alpheios',\r\n method: options.method,\r\n clientId: options.clientId,\r\n timeout: options.params && options.params.timeout ? options.params.timeout : 3000,\r\n callBackEvtSuccess: options.params ? options.params.callBackEvtSuccess : null,\r\n callBackEvtFailed: options.params ? options.params.callBackEvtFailed : null\r\n }\r\n\r\n const localLexiconsAdapter = new AlpheiosLexiconsAdapter(adapterParams, options.config)\r\n\r\n if (options.method === 'fetchShortDefs') {\r\n await localLexiconsAdapter.fetchShortDefs(options.params.homonym, options.params.opts)\r\n return { errors: localLexiconsAdapter.errors }\r\n }\r\n if (options.method === 'fetchFullDefs') {\r\n await localLexiconsAdapter.fetchFullDefs(options.params.homonym, options.params.opts)\r\n return { errors: localLexiconsAdapter.errors }\r\n }\r\n\r\n if (options.method === 'checkCachedData') {\r\n await localLexiconsAdapter.checkCachedData(options.params.url, options.params.externalData, options.params.skipFetch)\r\n return { errors: localLexiconsAdapter.errors }\r\n }\r\n\r\n if (options.method === 'getConfig') {\r\n return localLexiconsAdapter.config.lexicons\r\n }\r\n return null\r\n }\r\n\r\n static async autoCompleteWords (options) {\r\n ClientAdapters.checkMethodParam('autocompleteWords', 'logeion', options)\r\n\r\n const localLogeionAdapter = new AlpheiosLogeionAdapter({\r\n category: 'autocompleteWords',\r\n adapterName: 'logeion',\r\n method: options.method,\r\n clientId: options.clientId,\r\n limit: options.params.limit,\r\n lang: options.params.lang,\r\n sourceData: options.params.sourceData,\r\n fetchOptions: options.params.fetchOptions\r\n })\r\n\r\n if (localLogeionAdapter.available && options.method === 'getWords') {\r\n const res = await localLogeionAdapter.getWords(options.params.text)\r\n return { result: res, errors: localLogeionAdapter.errors }\r\n }\r\n return null\r\n }\r\n\r\n /**\r\n * It is used for getting segments and tokens from Alpheios Tokenization Service\r\n * @param {Object} options\r\n */\r\n static async tokenizationMethod (options) {\r\n ClientAdapters.checkMethodParam('tokenizationGroup', 'alpheios', options)\r\n\r\n const localTokenizationAdapter = new AlpheiosTokenizationAdapter({\r\n category: 'tokenizationGroup',\r\n adapterName: 'alpheios',\r\n method: options.method,\r\n clientId: options.clientId,\r\n fetchOptions: options.params.fetchOptions,\r\n storage: options.params.storage,\r\n sourceData: options.params.sourceData\r\n })\r\n\r\n if (!localTokenizationAdapter.available) {\r\n localTokenizationAdapter.addError(localTokenizationAdapter.l10n.getMsg('TOKENIZATION_AVAILABILITY_ERROR'))\r\n return {\r\n errors: localTokenizationAdapter.errors\r\n }\r\n }\r\n\r\n if (options.method === 'getTokens') {\r\n const res = await localTokenizationAdapter.getTokens(options.params.text)\r\n return { result: res, errors: localTokenizationAdapter.errors }\r\n }\r\n if (options.method === 'getConfig') {\r\n const res = await localTokenizationAdapter.getConfig()\r\n return { result: res, errors: localTokenizationAdapter.errors }\r\n }\r\n return null\r\n }\r\n\r\n /**\r\n * It is used for getting TEI texts from DTS API\r\n * @param {Object} options\r\n */\r\n static async dtsApiMethod (options) {\r\n ClientAdapters.checkMethodParam('dtsapiGroup', 'dtsapi', options)\r\n\r\n const localDTSAPIAdapter = new DTSAPIAdapter({\r\n category: 'dtsapiGroup',\r\n adapterName: 'dtsapi',\r\n method: options.method,\r\n clientId: options.clientId,\r\n baseUrl: options.params.baseUrl\r\n })\r\n\r\n if (options.method === 'getCollection') {\r\n const res = await localDTSAPIAdapter.getCollection(options.params.id, options.params.page)\r\n return { result: res, errors: localDTSAPIAdapter.errors }\r\n }\r\n\r\n if (options.method === 'getNavigation') {\r\n const res = await localDTSAPIAdapter.getNavigation(options.params.id, options.params.resource)\r\n return { result: res, errors: localDTSAPIAdapter.errors }\r\n }\r\n\r\n if (options.method === 'getDocument') {\r\n const res = await localDTSAPIAdapter.getDocument(options.params.id, options.params.refParams)\r\n return { result: res, errors: localDTSAPIAdapter.errors }\r\n }\r\n }\r\n\r\n /**\r\n * It is used for detecting language by text\r\n * @param {Object} options\r\n */\r\n static async detectLangMethod (options) {\r\n ClientAdapters.checkMethodParam('detectlangGroup', 'detectlang', options)\r\n\r\n const localDetectLangAdapter = new DetectLangAdapter({\r\n category: 'detectlangGroup',\r\n adapterName: 'detectlang',\r\n method: options.method,\r\n clientId: options.clientId,\r\n sourceData: options.params.sourceData\r\n })\r\n\r\n if (options.method === 'getDetectedLangsList') {\r\n const res = await localDetectLangAdapter.getDetectedLangsList(options.params.text)\r\n return { result: res, errors: localDetectLangAdapter.errors }\r\n }\r\n }\r\n}\r\n\r\nexport default ClientAdapters\r\n","class AdapterError extends Error {\r\n constructor (category, adapterName, methodName, messageError, statusCode) {\r\n super(messageError)\r\n this.adapter = `${category}.${adapterName}`\r\n this.methodName = methodName\r\n this.statusCode = statusCode\r\n\r\n if (this.adapter && this.methodName) {\r\n this.message = `${this.message} (${this.adapter}.${this.methodName})`\r\n }\r\n try {\r\n Error.captureStackTrace(this, AdapterError)\r\n } catch (e) {\r\n // Continue if environment does not support captureStackTrace.\r\n }\r\n }\r\n\r\n /**\r\n * @deprecated\r\n * This method is obsolete. It will be removed in future versions.\r\n * No replacement for its functionality has been provided as it is not used anywhere.\r\n */\r\n update (config) {\r\n this.adapter = `${config.category}.${config.adapterName}`\r\n this.methodName = config.method\r\n\r\n this.message = `${this.message} (${this.adapter}.${this.methodName})`\r\n return this\r\n }\r\n}\r\n\r\nexport default AdapterError\r\n","/**\n A warning represents a problem that is less severe than an error.\n In case of an error the problem that caused it cannot be ignored and,\n because of that, the normal execution of the workflow is impossible.\n The warning, in contrast, represents a issue that is important enough to be noticed,\n but that does not, on itself, prevent the code from being executed normally.\n */\nexport default class AdapterWarning extends Error {\n /**\n * @param {string} category\n * @param {string} adapterName - The name of the client adapter where the warning was originated.\n * @param {string} methodName - The name of the method from where the warning came from.\n * @param {string} errorCode - A short string representing the alphanumeric error code, such as `SOME_DATA_MISSING`\n * @param errorMessage\n */\n constructor (category, adapterName, methodName, errorCode, errorMessage) {\n super(errorMessage)\n this.adapter = `${category}.${adapterName}`\n this.methodName = methodName\n this.errorCode = errorCode\n }\n}\n","class NoRequiredParamError extends Error {\r\n constructor (category, adapterName, methodName, paramName) {\r\n const message = `There is no required parameter - ${paramName} for ${category}.${adapterName} - ${methodName}`\r\n super(message)\r\n this.adapter = `${category}.${adapterName}`\r\n this.methodName = methodName\r\n this.paramName = paramName\r\n Error.captureStackTrace(this, NoRequiredParamError)\r\n }\r\n}\r\n\r\nexport default NoRequiredParamError\r\n","export default class RemoteError extends Error {\n constructor (category, adapterName, methodName, errorCode, errorMessage) {\n super(errorMessage)\n this.adapter = `${category}.${adapterName}`\n this.methodName = methodName\n this.errorCode = errorCode\n }\n\n update (config) {\n this.adapter = `${config.category}.${config.adapterName}`\n this.methodName = config.method\n\n this.message = `${this.errorCode}: ${this.message} (${this.adapter}.${this.methodName})`\n return this\n }\n}\n","class WrongMethodError extends Error {\r\n constructor (category, adapterName, methodName) {\r\n const message = `Wrong method for ${category}.${adapterName} - ${methodName}`\r\n super(message)\r\n this.adapter = `${category}.${adapterName}`\r\n this.method = methodName\r\n Error.captureStackTrace(this, WrongMethodError)\r\n }\r\n}\r\n\r\nexport default WrongMethodError\r\n","import L10n from '@l10n/l10n.js'\nimport MessageBundle from '@l10n/message-bundle.js'\n\nexport { L10n, MessageBundle }","import EnUs from './en-us/messages.json'\r\nimport EnGb from './en-gb/messages.json'\r\n\r\nexport default {\r\n en_US: 'en-US',\r\n en_GB: 'en-GB',\r\n messages: {\r\n en_US: EnUs,\r\n en_GB: EnGb\r\n }\r\n}\r\n","import { ResourceProvider, Lexeme, Constants, Feature, Inflection, Homonym } from 'alpheios-data-models'\r\n\r\n/**\r\n Transforms morphological output adhering to the Alpheios lexicon\r\n schema to an Alpheios Homonym data model object\r\n*/\r\n\r\nconst featuresArray = [\r\n ['pofs', 'part'],\r\n ['case', 'grmCase'],\r\n ['gend', 'gender'],\r\n ['decl', 'declension'],\r\n ['conj', 'conjugation'],\r\n ['area', 'area'],\r\n ['age', 'age'],\r\n ['geo', 'geo'],\r\n ['freq', 'frequency'],\r\n ['note', 'note'],\r\n ['pron', 'pronunciation'],\r\n ['kind', 'kind'],\r\n ['src', 'source']\r\n]\r\n\r\nconst featuresArrayAll = [\r\n ['morph', 'morph'], // morph is first because it may have data that overrides other features\r\n ['pofs', 'part'],\r\n ['case', 'grmCase'],\r\n ['gend', 'gender'],\r\n ['decl', 'declension'],\r\n ['conj', 'conjugation'],\r\n ['num', 'number'],\r\n ['tense', 'tense'],\r\n ['voice', 'voice'],\r\n ['mood', 'mood'],\r\n ['pers', 'person'],\r\n ['comp', 'comparison'],\r\n ['stemtype', 'stemtype'],\r\n ['derivtype', 'derivtype'],\r\n ['dial', 'dialect']\r\n]\r\n\r\nconst attributeBasedFeatures = [\r\n ['paradigm', 'cat']\r\n]\r\n\r\nclass AlpheiosLexiconTransformer {\r\n constructor (adapter, mappingData) {\r\n this.adapter = adapter\r\n this.mappingData = mappingData\r\n this.allowUnknownValues = true\r\n }\r\n\r\n /**\r\n * This method extract parameter by defined path\r\n * @param {Object} source - json object to retrieve data from\r\n * @param {String} nameParam - parameter name that should be retrieved\r\n * @return {String|Object} - extracted data\r\n */\r\n extractData (source, nameParam) {\r\n const schema = {\r\n providerUri: ['RDF', 'Annotation', 'creator', 'Agent', 'about'],\r\n providerRights: ['RDF', 'Annotation', 'rights', '$'],\r\n inflections: ['rest', 'entry', 'infl'],\r\n dictData: ['rest', 'entry', 'dict']\r\n }\r\n let res\r\n\r\n if (schema[nameParam]) {\r\n res = source\r\n for (const pathPart of schema[nameParam]) {\r\n if (res[pathPart]) {\r\n res = res[pathPart]\r\n } else {\r\n res = undefined\r\n break\r\n }\r\n }\r\n }\r\n return res\r\n }\r\n\r\n /**\r\n * This method checks if data is array, if not - converts to array\r\n * @param {?} data - value that should be checked\r\n * @param {?} defaultData - default value, if data is null\r\n * @return {Array}\r\n */\r\n checkToBeArray (data, defaultData = []) {\r\n let resData = data\r\n if (!Array.isArray(data)) {\r\n if (data) {\r\n resData = [data]\r\n } else {\r\n resData = defaultData\r\n }\r\n }\r\n return resData\r\n }\r\n\r\n /**\r\n * This method creates hdwd from source json object\r\n * @param {Object} data - jsonObj from adapter\r\n * @param {Object} term - data from inflections\r\n * @param {Symbol} direction - define the word direction\r\n * @return {Array} - array with parts for hdwr\r\n */\r\n collectHdwdArray (data, term, direction) {\r\n let hdwd = [] // eslint-disable-line prefer-const\r\n\r\n if (data && !Array.isArray(data) && (!data.hdwd || !data.hdwd.$) && term) {\r\n hdwd.push(term.prefix ? term.prefix.$ : '')\r\n hdwd.push(term.stem ? term.stem.$ : '')\r\n hdwd.push(term.suff ? term.suff.$ : '')\r\n\r\n if (direction === Constants.LANG_DIR_RTL) {\r\n hdwd.reverse()\r\n }\r\n }\r\n\r\n return hdwd\r\n }\r\n\r\n /**\r\n * This method defines language from dictData nd inflections data\r\n * @param {Object} data - jsonObj from adapter\r\n * @param {Object} term - data from inflections\r\n * @return {String} - language code\r\n */\r\n defineLanguage (data, term) {\r\n let lemmaData = Array.isArray(data) ? data[0] : data // eslint-disable-line prefer-const\r\n if (!lemmaData.hdwd && term) {\r\n lemmaData.hdwd = {}\r\n lemmaData.hdwd.lang = term.lang\r\n }\r\n return lemmaData.hdwd ? lemmaData.hdwd.lang : lemmaData.lang\r\n }\r\n\r\n /**\r\n * This method defines language from dictData nd inflections data\r\n * @param {Object} data - jsonObj from adapter\r\n * @param {Object} term - data from inflections\r\n * Returned values:\r\n * - {Homonym}\r\n * - {undefined}\r\n */\r\n transformData (jsonObj, targetWord) {\r\n let lexemes = [] // eslint-disable-line prefer-const\r\n const annotationBody = this.checkToBeArray(jsonObj.RDF.Annotation.Body)\r\n\r\n const providerUri = this.extractData(jsonObj, 'providerUri')\r\n const providerRights = this.extractData(jsonObj, 'providerRights')\r\n\r\n const provider = new ResourceProvider(providerUri, providerRights)\r\n\r\n for (const lexeme of annotationBody) {\r\n const inflectionsJSON = this.checkToBeArray(this.extractData(lexeme, 'inflections'))\r\n const inflectionsJSONTerm = inflectionsJSON.length > 0 ? inflectionsJSON[0].term : undefined\r\n\r\n const dictData = this.extractData(lexeme, 'dictData')\r\n\r\n const lemmaElements = this.checkToBeArray(dictData, inflectionsJSONTerm ? [inflectionsJSONTerm] : [])\r\n const language = this.defineLanguage(lemmaElements, inflectionsJSONTerm)\r\n if (!language) {\r\n this.adapter.addError(this.adapter.l10n.getMsg('MORPH_TRANSFORM_NO_LANGUAGE'))\r\n continue\r\n }\r\n\r\n const reconstructHdwd = this.collectHdwdArray(dictData, inflectionsJSONTerm, this.mappingData.model.direction)\r\n if (reconstructHdwd.length > 0) {\r\n lemmaElements[0].hdwd.$ = reconstructHdwd.join('')\r\n }\r\n\r\n let lemmas = [] // eslint-disable-line prefer-const\r\n let lexemeSet = [] // eslint-disable-line prefer-const\r\n\r\n for (const entry of lemmaElements.entries()) {\r\n const index = entry[0]\r\n const elem = entry[1]\r\n\r\n // if the parser has a number in the hdwd the JSON will have it as a number\r\n // and not a String\r\n const lemmaText = elem.hdwd && elem.hdwd.$ ? `${elem.hdwd.$}` : ''\r\n if (!lemmaText) {\r\n this.adapter.addError(this.adapter.l10n.getMsg('MORPH_TRANSFORM_NO_LEMMA'))\r\n continue\r\n }\r\n const lemma = this.mappingData.parseLemma(lemmaText, language)\r\n lemmas.push(lemma)\r\n\r\n const features = featuresArray\r\n for (const feature of features) {\r\n this.mappingData.mapFeature(lemma, elem, ...feature, this.allowUnknownValues)\r\n }\r\n\r\n let shortdefs = [] // eslint-disable-line prefer-const\r\n let meanings = lexeme.rest.entry.mean\r\n if (!Array.isArray(meanings)) {\r\n meanings = [meanings]\r\n }\r\n meanings = meanings.filter((m) => m)\r\n\r\n // if we have multiple dictionary elements, take the meaning with the matching index\r\n if (lemmaElements.length > 1) {\r\n if (meanings && meanings[index] && meanings[index].$) {\r\n const meaning = meanings[index]\r\n shortdefs.push(ResourceProvider.getProxy(provider,\r\n this.mappingData.parseMeaning(meaning, lemmas[index].word)))\r\n }\r\n } else {\r\n // Changed to prevent some weird \"Array Iterator.prototype.next called on incompatible receiver [object Unknown]\" error\r\n const sDefs = meanings.filter((m) => m.$).map(meaning => {\r\n return ResourceProvider.getProxy(provider,\r\n this.mappingData.parseMeaning(meaning, lemma.word))\r\n })\r\n shortdefs.push(...sDefs)\r\n }\r\n let lexmodel = new Lexeme(lemma, []) // eslint-disable-line prefer-const\r\n\r\n lexmodel.meaning.appendShortDefs(shortdefs)\r\n lexemeSet.push(ResourceProvider.getProxy(provider, lexmodel))\r\n }\r\n\r\n if (lemmas.length === 0) {\r\n continue\r\n }\r\n\r\n const inflections = []\r\n for (const inflectionJSON of inflectionsJSON) {\r\n const stem = inflectionJSON.term && inflectionJSON.term.stem ? inflectionJSON.term.stem.$ : null\r\n const form = inflectionJSON.term && inflectionJSON.term.form ? inflectionJSON.term.form.$ : null\r\n const suffix = inflectionJSON.term && inflectionJSON.term.suff ? inflectionJSON.term.suff.$ : null\r\n const prefix = inflectionJSON.term && inflectionJSON.term.pref ? inflectionJSON.term.pref.$ : null\r\n const xmpl = inflectionJSON.xmpl ? inflectionJSON.xmpl.$ : null\r\n const inflWord = stem || form\r\n let inflection\r\n try {\r\n inflection = new Inflection(inflWord, this.mappingData.model.languageID, suffix, prefix, xmpl)\r\n } catch (e) {\r\n this.adapter.addError(this.adapter.l10n.getMsg('MORPH_TRANSFORM_INFLECTION_ERROR', { error: e.message }))\r\n continue\r\n }\r\n if (targetWord) {\r\n inflection.addFeature(new Feature(Feature.types.fullForm, targetWord, this.mappingData.model.languageID))\r\n }\r\n // Parse whatever grammatical features we're interested in and are provided\r\n for (const f of featuresArrayAll) {\r\n try {\r\n this.mappingData.mapFeature(inflection, inflectionJSON, ...f, this.allowUnknownValues)\r\n this.mappingData.overrideInflectionFeatureIfRequired(Feature.types[f[1]], inflection, lemmas)\r\n } catch (e) {\r\n // quietly continue\r\n }\r\n }\r\n\r\n // Parse attribute based features\r\n for (const f of attributeBasedFeatures) {\r\n try {\r\n this.mappingData.mapFeatureByAttribute(inflection, inflectionJSON, ...f, this.allowUnknownValues)\r\n this.mappingData.overrideInflectionFeatureIfRequired(Feature.types[f[1]], inflection, lemmas)\r\n } catch (e) {\r\n // quietly continue\r\n }\r\n }\r\n\r\n // we only use the inflection if it tells us something the dictionary details do not\r\n if (inflection[Feature.types.grmCase] ||\r\n inflection[Feature.types.tense] ||\r\n inflection[Feature.types.mood] ||\r\n inflection[Feature.types.voice] ||\r\n inflection[Feature.types.person] ||\r\n inflection[Feature.types.comparison] ||\r\n inflection[Feature.types.stemtype] || /** greek - morpheus **/\r\n inflection[Feature.types.derivtype] || /** greek - morpheus **/\r\n inflection[Feature.types.dialect] || /** greek **/\r\n inflection[Feature.types.morph] || /** arabic - aramorph **/\r\n inflection[Feature.types.kaylo] || /** syriac - sedra **/\r\n inflection[Feature.types.state] || /** syriac - sedra **/\r\n inflection[Feature.types.example]) {\r\n inflections.push(inflection)\r\n }\r\n // inflection can provide lemma decl, pofs, conj\r\n for (const lemma of lemmas) {\r\n if (!lemma.features[Feature.types.part]) {\r\n this.mappingData.mapFeature(lemma, inflectionJSON, 'pofs', 'part', this.allowUnknownValues)\r\n }\r\n // only take declension from inflection if lemma has no part of speech or its the same as the inflection\r\n if (!lemma.features[Feature.types.declension] &&\r\n (!lemma.features[Feature.types.part] || lemma.features[Feature.types.part].isEqual(inflection[Feature.types.part]))) {\r\n this.mappingData.mapFeature(lemma, inflectionJSON, 'decl', 'declension', this.allowUnknownValues)\r\n }\r\n // only take conjugation from inflection if lemma has a part of speech and its the same as the inflection\r\n if (!lemma.features[Feature.types.conjugation] &&\r\n (!lemma.features[Feature.types.part] || lemma.features[Feature.types.part].isEqual(inflection[Feature.types.part]))) {\r\n this.mappingData.mapFeature(lemma, inflectionJSON, 'conj', 'conjugation', this.allowUnknownValues)\r\n }\r\n }\r\n }\r\n const aggregated = this.mappingData.aggregateLexemes(lexemeSet, inflections)\r\n lexemes.push(...aggregated)\r\n }\r\n if (lexemes.length > 0) {\r\n return new Homonym(lexemes, targetWord)\r\n } else {\r\n return undefined\r\n }\r\n }\r\n}\r\n\r\nexport default AlpheiosLexiconTransformer\r\n","/*\r\nObjects of a morphology analyzer's library\r\n */\r\nimport { Feature, Lemma, FeatureImporter, Definition, Constants, Logger } from 'alpheios-data-models'\r\n\r\n/**\r\n * Holds all information required to transform from morphological analyzer's grammatical feature values to the\r\n * library standards. There is one ImportMorphData object per language.\r\n */\r\nclass ImportMorphData {\r\n /**\r\n * Creates an ImportMorphData object for the language provided.\r\n * @param {Function} model - A language model of the import data.\r\n * @param {String} engine - a code for the engine that is using this mapping model\r\n */\r\n constructor (model, engine) {\r\n 'use strict'\r\n this.model = model\r\n this.engine = engine\r\n // add all the features that the language supports so that we\r\n // can return the default values if we don't need to import a mapping\r\n for (const featureName of Object.keys(this.model.features)) {\r\n this.addFeature(featureName)\r\n }\r\n // may be overridden by specific engine to handle vagaries in reporting of dictionary entries\r\n // default just returns them as provided\r\n this.aggregateLexemes = function (lexemeSet, inflections) {\r\n let lexemes = [] // eslint-disable-line prefer-const\r\n for (const lex of lexemeSet) {\r\n // only process if we have a lemma that differs from the target\r\n // word or if we have at least a part of speech\r\n if (this.reportLexeme(lex)) {\r\n lex.inflections = inflections.map(inflection => inflection.clone())\r\n lexemes.push(lex)\r\n }\r\n }\r\n return lexemes\r\n }\r\n // may be overridden by specific engine use via setLemmaParser\r\n this.parseLemma = function (lemma) { return new Lemma(lemma, this.model.languageID) }\r\n\r\n // may be overridden by specific engine use via setMeaningParser\r\n this.parseMeaning = function (meaning, targetWord) {\r\n const lang = meaning.lang ? meaning.lang : Constants.STR_LANG_CODE_ENG\r\n return new Definition(meaning.$, lang, 'text/plain', targetWord)\r\n }\r\n\r\n // may be overridden by specific engine use via setPropertyParser - default just returns the property value\r\n // as a list\r\n this.parseProperty = function (propertyName, propertyValue, inputElem) {\r\n let propertyValues = []\r\n if (propertyName === 'decl') {\r\n propertyValues = propertyValue.split('&').map((p) => p.trim())\r\n } else if (propertyName === 'comp' && propertyValue === 'positive') {\r\n propertyValues = []\r\n } else {\r\n propertyValues = [propertyValue]\r\n }\r\n return propertyValues\r\n }\r\n\r\n // may be overridden by specifc engine use via setLexemeFilter - default assumes we will have a part of speech\r\n this.reportLexeme = function (lexeme) {\r\n return lexeme.lemma.features[Feature.types.part]\r\n }\r\n\r\n // may be overriden by specific engine use to a list of of featureTypes which\r\n // should be overridden in the inflection data from the lemma data\r\n // for any featureType that can be overridden, it should map that featureType\r\n // name to a callback with the signature\r\n // callback(featureType,inflection,lemmas): { withLemma,\r\n // withFeature\r\n // }\r\n // if withLemma is false, and withFeature is null, no override will be used\r\n // if withLemma is true, the feature from the lemma, if present, will be used\r\n // if withLemma is false and withFeature is not null, the feature value of\r\n // withFeature will be used\r\n this.inflectionOverrides = {}\r\n }\r\n\r\n /**\r\n * Adds a grammatical feature whose values to be mapped.\r\n * @param {string} featureName - A name of a grammatical feature (i.e. declension, number, etc.)\r\n * @return {Object} An object that represent a newly created grammatical feature.\r\n */\r\n addFeature (featureName) {\r\n this[featureName] = {}\r\n const model = this.model\r\n\r\n this[featureName].add = function add (providerValue, alpheiosValue) {\r\n this[providerValue] = alpheiosValue\r\n return this\r\n }\r\n\r\n this[featureName].get = function get (providerValue, sortOrder = 1, allowUnknownValues = false) {\r\n let mappedValue = []\r\n if (!this.importer.has(providerValue)) {\r\n // if the providerValue matches the model value or the model value\r\n // is unrestricted, return a feature with the providerValue and order\r\n if (model.typeFeature(featureName).hasValue(providerValue) ||\r\n model.typeFeature(featureName).valuesUnrestricted) {\r\n mappedValue = model.typeFeature(featureName).createFeature(providerValue, sortOrder)\r\n } else {\r\n const message = `Unknown value \"${providerValue}\" of feature \"${featureName}\" for ${model.languageCode} (allowed = ${allowUnknownValues})`\r\n if (allowUnknownValues) {\r\n mappedValue = model.typeFeature(featureName).createFeature(providerValue, sortOrder)\r\n } else {\r\n throw new Error(message)\r\n }\r\n }\r\n } else {\r\n const tempValue = this.importer.get(providerValue)\r\n if (Array.isArray(tempValue)) {\r\n mappedValue = model.typeFeature(featureName).createFeatures(tempValue, sortOrder)\r\n } else {\r\n mappedValue = model.typeFeature(featureName).createFeature(tempValue, sortOrder)\r\n }\r\n }\r\n return mappedValue\r\n }\r\n\r\n /**\r\n * @param {Object[]} data - An array of objects with `providerData` (an item value) and `sortOrder` fields\r\n * @param allowUnknownValues\r\n * @return {Feature}\r\n */\r\n this[featureName].getMultiple = function get (data, allowUnknownValues = false) {\r\n let values = [] // Converts values from `data` into `values` array\r\n for (const item of data) {\r\n if (this.importer.has(item.providerValue)) {\r\n const value = this.importer.get(item.providerValue)\r\n if (Array.isArray(value)) {\r\n // if the import returns an array, it should already have the sortOrder\r\n values = value\r\n } else {\r\n values = [[value, item.sortOrder]]\r\n }\r\n } else if (model.typeFeature(featureName).hasValue(item.providerValue) ||\r\n model.typeFeature(featureName).valuesUnrestricted) {\r\n values.push([item.providerValue, item.sortOrder])\r\n } else {\r\n const message = `Unknown value \"${item.providerValue}\" of feature \"${featureName}\" for ${model.languageCode} (allowed = ${allowUnknownValues})`\r\n if (allowUnknownValues) {\r\n values.push([item.providerValue, item.sortOrder])\r\n } else {\r\n throw new Error(message)\r\n }\r\n }\r\n }\r\n return model.typeFeature(featureName).createFeatures(values)\r\n }\r\n\r\n this[featureName].importer = new FeatureImporter()\r\n\r\n return this[featureName]\r\n }\r\n\r\n /**\r\n * Add an engine-specific lexeme aggregator\r\n */\r\n setLexemeAggregator (callback) {\r\n this.aggregateLexemes = callback\r\n }\r\n\r\n /**\r\n /**\r\n * Add an engine-specific lemma parser\r\n */\r\n setLemmaParser (callback) {\r\n this.parseLemma = callback\r\n }\r\n\r\n setMeaningParser (callback) {\r\n this.parseMeaning = callback\r\n }\r\n\r\n /**\r\n * Add an engine-specific property parser\r\n */\r\n setPropertyParser (callback) {\r\n this.parseProperty = callback\r\n }\r\n\r\n /**\r\n * Add an engine-specific lexeme filter\r\n */\r\n setLexemeFilter (callback) {\r\n this.reportLexeme = callback\r\n }\r\n\r\n /**\r\n * Maps property of a single feature type to a single Feature object with one or more values\r\n * (if this feature has multiple values). Feature is stored as a property of the supplied model object.\r\n * @param {object} model the model object to which the feature will be added\r\n * @param {object} inputElem the input data element\r\n * @param {object} inputName the property name in the input data\r\n * @param {string} featureName the name of the feature it will be mapped to\r\n * @param {boolean} allowUnknownValues flag to indicate if unknown values are allowed\r\n */\r\n mapFeature (model, inputElem, inputName, featureName, allowUnknownValues) {\r\n const inputItem = inputElem[inputName]\r\n if (inputItem && (Array.isArray(inputItem) || inputItem.$)) {\r\n let values = []\r\n if (Array.isArray(inputItem)) {\r\n // There are multiple values of this feature\r\n for (const e of inputItem) {\r\n values.push(...this.parseProperty(inputName, e.$, inputElem))\r\n }\r\n } else {\r\n values = this.parseProperty(inputName, inputItem.$, inputElem)\r\n }\r\n // `values` is always an array as an array is a return value of `parseProperty`\r\n if (values.length > 0) {\r\n // There are some values found\r\n values = values.map(v => { return { providerValue: v, sortOrder: inputItem.order ? inputItem.order : 1 } })\r\n const feature = this[Feature.types[featureName]].getMultiple(values, allowUnknownValues)\r\n model.addFeature(feature)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Maps property of a single feature type to a single Feature object with one\r\n * or more values, using an attribute to determine the mapped-to feature name\r\n * (if this feature has multiple values). Feature is stored as a property of\r\n * the supplied model object.\r\n * @param {object} model the model object to which the feature will be added\r\n * @param {object} inputElem the input data element\r\n * @param {object} inputName the property name in the input data\r\n * @param {string} attributeName the attribute to use to get the feature name\r\n * @param {boolean} allowUnknownValues flag to indicate if unknown values are allowed\r\n */\r\n mapFeatureByAttribute (model, inputElem, inputName, attributeName, allowUnknownValues) {\r\n const inputItem = inputElem[inputName]\r\n let featureName\r\n if (inputItem && (Array.isArray(inputItem) || inputItem.$)) {\r\n let values = []\r\n if (Array.isArray(inputItem)) {\r\n // There are multiple values of this feature\r\n for (const e of inputItem) {\r\n if (featureName && featureName !== e[attributeName]) {\r\n Logger.getInstance().warn('Mutiple feature values with mismatching attribute value', inputElem)\r\n }\r\n featureName = e[attributeName]\r\n values.push(...this.parseProperty(inputName, e.$, inputElem))\r\n }\r\n } else {\r\n featureName = inputItem[attributeName]\r\n values = this.parseProperty(inputName, inputItem.$, inputElem)\r\n }\r\n // `values` is always an array as an array is a return value of `parseProperty`\r\n if (values.length > 0) {\r\n // There are some values found\r\n values = values.map(v => { return { providerValue: v, sortOrder: inputItem.order ? inputItem.order : 1 } })\r\n const feature = this[Feature.types[featureName]].getMultiple(values, allowUnknownValues, inputItem.cat)\r\n model.addFeature(feature)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Overrides feature data from an inflection with feature data from the lemma\r\n * or other data\r\n * as defined by the engine-specific inflectionOverrides property\r\n * @param {String} featureType the feature type name\r\n * @param {Inflection} inflection the inflection object\r\n * @param {Lemma[]} lemmas the lemma objects\r\n */\r\n overrideInflectionFeatureIfRequired (featureType, inflection, lemmas) {\r\n if (this.inflectionOverrides[featureType]) {\r\n const override = this.inflectionOverrides[featureType](inflection, lemmas)\r\n if (override.withLemma) {\r\n for (const lemma of lemmas.filter(l => l.features[featureType])) {\r\n inflection.addFeature(lemma.features[featureType])\r\n }\r\n } else if (override.withFeature !== null) {\r\n inflection.addFeature(override.withFeature)\r\n }\r\n }\r\n }\r\n}\r\nexport default ImportMorphData\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE_alpheios_data_models__;","module.exports = __WEBPACK_EXTERNAL_MODULE_alpheios_l10n__;","module.exports = __WEBPACK_EXTERNAL_MODULE_alpheios_messaging__;","module.exports = __WEBPACK_EXTERNAL_MODULE_papaparse__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(\"../index.js\");\n","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]]\n ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/uuidjs/uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","import LanguageModel from './language_model.js'\nimport * as Constants from './constants.js'\nimport Feature from './feature.js'\n\nconst typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class ArabicLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_ARABIC }\n static get languageCode () { return Constants.STR_LANG_CODE_ARA }\n static get languageCodes () { return [Constants.STR_LANG_CODE_ARA, Constants.STR_LANG_CODE_AR] }\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_RTL }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\nfor the current node\n *\n * @param node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * @override\n */\n static alternateWordEncodings ({\n word = null, preceding = null, following = null, encoding = null,\n preserveCase = false, includeOriginal = false\n } = {}) {\n // tanwin (& tatweel) - drop FATHATAN, DAMMATAN, KASRATAN, TATWEEL\n const tanwin = word.replace(/[\\u{064B}\\u{064C}\\u{064D}\\u{0640}]/ug, '')\n // hamzas - replace ALEF WITH MADDA ABOVE, ALEF WITH HAMZA ABOVE/BELOW with ALEF\n const hamza = tanwin.replace(/[\\u{0622}\\u{0623}\\u{0625}]/ug, '\\u{0627}')\n // harakat - drop FATHA, DAMMA, KASRA, SUPERSCRIPT ALEF, ALEF WASLA\n const harakat = hamza.replace(/[\\u{064E}\\u{064F}\\u{0650}\\u{0670}\\u{0671}]/ug, '')\n // shadda\n const shadda = harakat.replace(/\\u{0651}/ug, '')\n // sukun\n const sukun = shadda.replace(/\\u{0652}/ug, '')\n // alef\n const alef = sukun.replace(/\\u{0627}/ug, '')\n const alternates = new Map([\n ['tanwin', tanwin],\n ['hamza', hamza],\n ['harakat', harakat],\n ['shadda', shadda],\n ['sukun', sukun],\n ['alef', alef]\n ])\n let fullList = [] // eslint-disable-line prefer-const\n if (encoding !== null && alternates.has(encoding)) {\n fullList = [alternates.get(encoding)]\n } else {\n fullList = Array.from(alternates.values())\n }\n if (!includeOriginal) {\n fullList = fullList.filter(w => w !== word)\n }\n return fullList\n }\n\n /**\n * Get a list of valid punctuation for this language\n *\n * @returns {string} a string containing valid punctuation symbols\n */\n static getPunctuation () {\n return \".,;:!?'\\\"(){}\\\\[\\\\]<>\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u2020\\u2021\\u201C\\u201D\\u0387\\u00B7\\n\\r\\u200C\\u200D\"\n }\n\n /**\n * Aggregate inflections for display according to language model characteristics\n *\n * @param inflections\n */\n static aggregateInflectionsForDisplay (inflections) {\n // TODO at some point we might want to be able to check the provider in here\n // because this really only applies to the specifics of the Aramorph parser\n let aggregated = [] // eslint-disable-line prefer-const\n // eslint-disable-next-line prefer-const\n let aggregates = { [Constants.POFS_NOUN]: [], [Constants.POFS_ADJECTIVE]: [], [Constants.POFS_NOUN_PROPER]: [] }\n for (const infl of inflections) {\n if (infl[Feature.types.morph] && infl[Feature.types.morph].value.match(/ADJ[uaiNK]/)) {\n aggregates[Constants.POFS_ADJECTIVE].push(infl)\n } else if (infl[Feature.types.morph] && infl[Feature.types.morph].value.match(/NOUN[uaiNK]/)) {\n aggregates[Constants.POFS_NOUN].push(infl)\n } else if (infl[Feature.types.morph] && infl[Feature.types.morph].value.match(/NOUN_PROP[uaiNK]/)) {\n aggregates[Constants.POFS_NOUN_PROPER].push(infl)\n } else {\n // we are also going to keep the examples out of the display for now\n infl.example = null\n aggregated.push(infl)\n }\n }\n for (const type of Object.keys(aggregates)) {\n const base = aggregated.filter((i) => i[Feature.types.part].value === type)\n if (base.length !== 1) {\n // if we don't have the base form then we don't really know what to do here\n // so just put the inflection back in the ones available for display\n aggregated.push(...aggregates[type])\n }\n // we may decide we want to keep the extra suffix and morph information\n // from the alternate inflections but for now we just will drop it from\n // the inflections that are displayed\n }\n return aggregated\n }\n}\n","import LanguageModel from './language_model.js'\nimport Feature from './feature.js'\nimport * as Constants from './constants.js'\nimport Logger from './logging/logger.js'\n\nlet typeFeatures = new Map() // eslint-disable-line prefer-const\nlet typeFeaturesInitialized = false\n\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class ChineseLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_CHINESE }\n static get languageCode () { return Constants.STR_LANG_CODE_ZHO }\n static get languageCodes () {\n return [\n Constants.STR_LANG_CODE_ZH,\n Constants.STR_LANG_CODE_ZHO,\n Constants.STR_LANG_CODE_ZH_HANT,\n Constants.STR_LANG_CODE_ZH_HANS\n ]\n }\n\n static get contextForward () { return 5 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_CHAR }\n\n static get featureValues () {\n return new Map([\n [\n Feature.types.fullForm,\n []\n ],\n\n [\n Feature.types.frequency,\n []\n ],\n [\n Feature.types.pronunciation,\n []\n ],\n [\n Feature.types.radical,\n []\n ]\n\n ])\n }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n static getPunctuation () {\n return \".,;:!?'\\\"(){}\\\\[\\\\]<>\\\\\\n\\r\\uFF0C\\u3001\\u3002\\u300C\\u300D\\u300A\\u300B\\u200C\\u200D\\u2020\\u2021\"\n }\n\n static _isVowel (aLetter) {\n return ['a', 'e', 'i', 'o', 'u'].includes(aLetter)\n }\n\n static formatPinyin (aPinyin) {\n const _a = ['\\u0101', '\\u00E1', '\\u01CE', '\\u00E0', 'a']\n const _e = ['\\u0113', '\\u00E9', '\\u011B', '\\u00E8', 'e']\n const _i = ['\\u012B', '\\u00ED', '\\u01D0', '\\u00EC', 'i']\n const _o = ['\\u014D', '\\u00F3', '\\u01D2', '\\u00F2', 'o']\n const _u = ['\\u016B', '\\u00FA', '\\u01D4', '\\u00F9', 'u']\n const _v = ['\\u01D6', '\\u01D8', '\\u01DA', '\\u01DC', '\\u00FC']\n\n // Remove spaces before and after split parts; eliminate empty split parts\n aPinyin = aPinyin.split(/(\\d)/).map(el => el.trim()).filter(el => Boolean(el))\n\n let formatedPinyin = [] // eslint-disable-line prefer-const\n const toneFormat = {\n 1: 0, 2: 1, 3: 2, 4: 3\n }\n\n for (let j = 0; j < aPinyin.length; j++) {\n if (j % 2 === 0) {\n let pin = aPinyin[j]\n const tone = toneFormat[aPinyin[j + 1]] !== undefined ? toneFormat[aPinyin[j + 1]] : 4\n\n if (pin.indexOf('a') !== -1) {\n pin = pin.replace('a', _a[tone])\n } else if (pin.indexOf('e') !== -1) {\n pin = pin.replace('e', _e[tone])\n } else if (pin.indexOf('ou') !== -1) {\n pin = pin.replace('o', _o[tone])\n } else {\n for (let k = pin.length - 1; k >= 0; k--) {\n if (this._isVowel(pin[k])) {\n switch (pin[k]) {\n case 'i':\n pin = pin.replace('i', _i[tone])\n break\n case 'o':\n pin = pin.replace('o', _o[tone])\n break\n case 'u':\n if (k + 1 < pin.length - 1 && pin[k + 1] === ':') { pin = pin.replace('u:', _v[tone]) } else { pin = pin.replace('u', _u[tone]) }\n break\n default:\n Logger.getInstance().warn('some kind of weird vowel', pin[k])\n }\n break\n }\n }\n }\n formatedPinyin.push(pin)\n }\n }\n return formatedPinyin.join(' ').trim()\n }\n}\n","/* eslint-disable no-unused-vars */\nexport const LANG_UNIT_WORD = Symbol('word')\nexport const LANG_UNIT_CHAR = Symbol('char')\nexport const LANG_DIR_LTR = Symbol('ltr')\nexport const LANG_DIR_RTL = Symbol('rtl')\nexport const LANG_UNDEFINED = Symbol('undefined')\nexport const LANG_LATIN = Symbol('latin')\nexport const LANG_GREEK = Symbol('greek')\nexport const LANG_ARABIC = Symbol('arabic')\nexport const LANG_PERSIAN = Symbol('persian')\nexport const LANG_GEEZ = Symbol('ge\\'ez')\nexport const LANG_CHINESE = Symbol('chinese')\nexport const LANG_SYRIAC = Symbol('syriac')\n\nexport const STR_LANG_CODE_UNDEFINED = 'undefined'\nexport const STR_LANG_CODE_LAT = 'lat'\nexport const STR_LANG_CODE_LA = 'la'\nexport const STR_LANG_CODE_GRC = 'grc'\nexport const STR_LANG_CODE_ARA = 'ara'\nexport const STR_LANG_CODE_AR = 'ar'\nexport const STR_LANG_CODE_FAS = 'fas'\nexport const STR_LANG_CODE_PER = 'per'\nexport const STR_LANG_CODE_FA_IR = 'fa-IR'\nexport const STR_LANG_CODE_FA = 'fa'\nexport const STR_LANG_CODE_GEZ = 'gez'\nexport const STR_LANG_CODE_ZHO = 'zho'\nexport const STR_LANG_CODE_ZH = 'zh'\nexport const STR_LANG_CODE_ZH_HANT = 'zh-Hant' // Traditional Chinese\nexport const STR_LANG_CODE_ZH_HANS = 'zh-Hans' // Simplified Chinese\nexport const STR_LANG_CODE_SYC = 'syc'\nexport const STR_LANG_CODE_SYR = 'syr'\nexport const STR_LANG_CODE_SYR_SYRJ = 'syr-Syrj'\nexport const STR_LANG_CODE_ENG = 'eng'\n\n// parts of speech\nexport const POFS_ADJECTIVE = 'adjective'\nexport const POFS_ADVERB = 'adverb'\nexport const POFS_ADVERBIAL = 'adverbial'\nexport const POFS_ARTICLE = 'article'\nexport const POFS_CONJUNCTION = 'conjunction'\nexport const POFS_EXCLAMATION = 'exclamation'\nexport const POFS_INTERJECTION = 'interjection'\nexport const POFS_NOUN = 'noun'\nexport const POFS_NOUN_PROPER = 'proper noun'\nexport const POFS_NUMERAL = 'numeral'\nexport const POFS_PARTICLE = 'particle'\nexport const POFS_PREFIX = 'prefix'\nexport const POFS_PREPOSITION = 'preposition'\nexport const POFS_PRONOUN = 'pronoun'\nexport const POFS_SUFFIX = 'suffix'\nexport const POFS_GERUNDIVE = 'gerundive'\nexport const POFS_SUPINE = 'supine'\nexport const POFS_VERB = 'verb'\nexport const POFS_VERB_PARTICIPLE = 'verb participle'\nexport const POFS_DENOMINATIVE = 'denominative'\n// gender\nexport const GEND_MASCULINE = 'masculine'\nexport const GEND_FEMININE = 'feminine'\nexport const GEND_NEUTER = 'neuter'\nexport const GEND_COMMON = 'common'\nexport const GEND_ANIMATE = 'animate'\nexport const GEND_INANIMATE = 'inanimate'\n// Polish gender types\nexport const GEND_PERSONAL_MASCULINE = 'personal masculine'\nexport const GEND_ANIMATE_MASCULINE = 'animate masculine'\nexport const GEND_INANIMATE_MASCULINE = 'inanimate masculine'\n// comparative\nexport const COMP_POSITIVE = 'positive'\nexport const COMP_COMPARITIVE = 'comparative'\nexport const COMP_SUPERLATIVE = 'superlative'\n// case\nexport const CASE_ABESSIVE = 'abessive'\nexport const CASE_ABLATIVE = 'ablative'\nexport const CASE_ABSOLUTIVE = 'absolutive'\nexport const CASE_ACCUSATIVE = 'accusative'\nexport const CASE_ADDIRECTIVE = 'addirective'\nexport const CASE_ADELATIVE = 'adelative'\nexport const CASE_ADESSIVE = 'adessive'\nexport const CASE_ADVERBIAL = 'adverbial'\nexport const CASE_ALLATIVE = 'allative'\nexport const CASE_ANTESSIVE = 'antessive'\nexport const CASE_APUDESSIVE = 'apudessive'\nexport const CASE_AVERSIVE = 'aversive'\nexport const CASE_BENEFACTIVE = 'benefactive'\nexport const CASE_CARITIVE = 'caritive'\nexport const CASE_CAUSAL = 'causal'\nexport const CASE_CAUSAL_FINAL = 'causal-final'\nexport const CASE_COMITATIVE = 'comitative'\nexport const CASE_DATIVE = 'dative'\nexport const CASE_DELATIVE = 'delative'\nexport const CASE_DIRECT = 'direct'\nexport const CASE_DISTRIBUTIVE = 'distributive'\nexport const CASE_DISTRIBUTIVE_TEMPORAL = 'distributive-temporal'\nexport const CASE_ELATIVE = 'elative'\nexport const CASE_ERGATIVE = 'ergative'\nexport const CASE_ESSIVE = 'essive'\nexport const CASE_ESSIVE_FORMAL = 'essive-formal'\nexport const CASE_ESSIVE_MODAL = 'essive-modal'\nexport const CASE_EQUATIVE = 'equative'\nexport const CASE_EVITATIVE = 'evitative'\nexport const CASE_EXESSIVE = 'exessive'\nexport const CASE_FINAL = 'final'\nexport const CASE_FORMAL = 'formal'\nexport const CASE_GENITIVE = 'genitive'\nexport const CASE_ILLATIVE = 'illative'\nexport const CASE_INELATIVE = 'inelative'\nexport const CASE_INESSIVE = 'inessive'\nexport const CASE_INSTRUCTIVE = 'instructive'\nexport const CASE_INSTRUMENTAL = 'instrumental'\nexport const CASE_INSTRUMENTAL_COMITATIVE = 'instrumental-comitative'\nexport const CASE_INTRANSITIVE = 'intransitive'\nexport const CASE_LATIVE = 'lative'\nexport const CASE_LOCATIVE = 'locative'\nexport const CASE_MODAL = 'modal'\nexport const CASE_MULTIPLICATIVE = 'multiplicative'\nexport const CASE_NOMINATIVE = 'nominative'\nexport const CASE_PARTITIVE = 'partitive'\nexport const CASE_PEGATIVE = 'pegative'\nexport const CASE_PERLATIVE = 'perlative'\nexport const CASE_POSSESSIVE = 'possessive'\nexport const CASE_POSTELATIVE = 'postelative'\nexport const CASE_POSTDIRECTIVE = 'postdirective'\nexport const CASE_POSTESSIVE = 'postessive'\nexport const CASE_POSTPOSITIONAL = 'postpositional'\nexport const CASE_PREPOSITIONAL = 'prepositional'\nexport const CASE_PRIVATIVE = 'privative'\nexport const CASE_PROLATIVE = 'prolative'\nexport const CASE_PROSECUTIVE = 'prosecutive'\nexport const CASE_PROXIMATIVE = 'proximative'\nexport const CASE_SEPARATIVE = 'separative'\nexport const CASE_SOCIATIVE = 'sociative'\nexport const CASE_SUBDIRECTIVE = 'subdirective'\nexport const CASE_SUBESSIVE = 'subessive'\nexport const CASE_SUBELATIVE = 'subelative'\nexport const CASE_SUBLATIVE = 'sublative'\nexport const CASE_SUPERDIRECTIVE = 'superdirective'\nexport const CASE_SUPERESSIVE = 'superessive'\nexport const CASE_SUPERLATIVE = 'superlative'\nexport const CASE_SUPPRESSIVE = 'suppressive'\nexport const CASE_TEMPORAL = 'temporal'\nexport const CASE_TERMINATIVE = 'terminative'\nexport const CASE_TRANSLATIVE = 'translative'\nexport const CASE_VIALIS = 'vialis'\nexport const CASE_VOCATIVE = 'vocative'\nexport const MOOD_ADMIRATIVE = 'admirative'\nexport const MOOD_COHORTATIVE = 'cohortative'\nexport const MOOD_CONDITIONAL = 'conditional'\nexport const MOOD_DECLARATIVE = 'declarative'\nexport const MOOD_DUBITATIVE = 'dubitative'\nexport const MOOD_ENERGETIC = 'energetic'\nexport const MOOD_EVENTIVE = 'eventive'\nexport const MOOD_GENERIC = 'generic'\nexport const MOOD_GERUNDIVE = 'gerundive'\nexport const MOOD_HYPOTHETICAL = 'hypothetical'\nexport const MOOD_IMPERATIVE = 'imperative'\nexport const MOOD_INDICATIVE = 'indicative'\nexport const MOOD_INFERENTIAL = 'inferential'\nexport const MOOD_INFINITIVE = 'infinitive'\nexport const MOOD_INTERROGATIVE = 'interrogative'\nexport const MOOD_JUSSIVE = 'jussive'\nexport const MOOD_NEGATIVE = 'negative'\nexport const MOOD_OPTATIVE = 'optative'\nexport const MOOD_PARTICIPLE = 'participle'\nexport const MOOD_PRESUMPTIVE = 'presumptive'\nexport const MOOD_RENARRATIVE = 'renarrative'\nexport const MOOD_SUBJUNCTIVE = 'subjunctive'\nexport const MOOD_SUPINE = 'supine'\nexport const NUM_SINGULAR = 'singular'\nexport const NUM_PLURAL = 'plural'\nexport const NUM_DUAL = 'dual'\nexport const NUM_TRIAL = 'trial'\nexport const NUM_PAUCAL = 'paucal'\nexport const NUM_SINGULATIVE = 'singulative'\nexport const NUM_COLLECTIVE = 'collective'\nexport const NUM_DISTRIBUTIVE_PLURAL = 'distributive plural'\nexport const NRL_CARDINAL = 'cardinal'\nexport const NRL_ORDINAL = 'ordinal'\nexport const NRL_DISTRIBUTIVE = 'distributive'\nexport const NURL_NUMERAL_ADVERB = 'numeral adverb'\nexport const ORD_1ST = '1st'\nexport const ORD_2ND = '2nd'\nexport const ORD_3RD = '3rd'\nexport const ORD_4TH = '4th'\nexport const ORD_5TH = '5th'\nexport const ORD_6TH = '6th'\nexport const ORD_7TH = '7th'\nexport const ORD_8TH = '8th'\nexport const ORD_9TH = '9th'\nexport const TENSE_AORIST = 'aorist'\nexport const TENSE_FUTURE = 'future'\nexport const TENSE_FUTURE_PERFECT = 'future perfect'\nexport const TENSE_IMPERFECT = 'imperfect'\nexport const TENSE_PAST_ABSOLUTE = 'past absolute'\nexport const TENSE_PERFECT = 'perfect'\nexport const TENSE_PLUPERFECT = 'pluperfect'\nexport const TENSE_PRESENT = 'present'\nexport const VKIND_TO_BE = 'to be'\nexport const VKIND_COMPOUNDS_OF_TO_BE = 'compounds of to be'\nexport const VKIND_TAKING_ABLATIVE = 'taking ablative'\nexport const VKIND_TAKING_DATIVE = 'taking dative'\nexport const VKIND_TAKING_GENITIVE = 'taking genitive'\nexport const VKIND_TRANSITIVE = 'transitive'\nexport const VKIND_INTRANSITIVE = 'intransitive'\nexport const VKIND_IMPERSONAL = 'impersonal'\nexport const VKIND_DEPONENT = 'deponent'\nexport const VKIND_SEMIDEPONENT = 'semideponent'\nexport const VKIND_PERFECT_DEFINITE = 'perfect definite'\nexport const VOICE_ACTIVE = 'active'\nexport const VOICE_PASSIVE = 'passive'\nexport const VOICE_MEDIOPASSIVE = 'mediopassive'\nexport const VOICE_IMPERSONAL_PASSIVE = 'impersonal passive'\nexport const VOICE_MIDDLE = 'middle'\nexport const VOICE_ANTIPASSIVE = 'antipassive'\nexport const VOICE_REFLEXIVE = 'reflexive'\nexport const VOICE_RECIPROCAL = 'reciprocal'\nexport const VOICE_CAUSATIVE = 'causative'\nexport const VOICE_ADJUTATIVE = 'adjutative'\nexport const VOICE_APPLICATIVE = 'applicative'\nexport const VOICE_CIRCUMSTANTIAL = 'circumstantial'\nexport const VOICE_DEPONENT = 'deponent'\nexport const TYPE_IRREGULAR = 'irregular'\nexport const TYPE_REGULAR = 'regular'\n// Classes\nexport const CLASS_PERSONAL = 'personal'\nexport const CLASS_REFLEXIVE = 'reflexive'\nexport const CLASS_POSSESSIVE = 'possessive'\nexport const CLASS_DEMONSTRATIVE = 'demonstrative'\nexport const CLASS_RELATIVE = 'relative'\nexport const CLASS_INTERROGATIVE = 'interrogative'\nexport const CLASS_GENERAL_RELATIVE = 'general relative'\nexport const CLASS_INDEFINITE = 'indefinite'\nexport const CLASS_INTENSIVE = 'intensive'\nexport const CLASS_RECIPROCAL = 'reciprocal'\n// Paradigms\nexport const PARADIGM_CAT_KAYLO = 'kaylo'\nexport const PARADIGM_CAT_STATE = 'state'\n","import Definition from './definition'\nimport LMF from './language_model_factory.js'\n\nexport default class DefinitionSet {\n constructor (lemmaWord, languageID) {\n this.lemmaWord = lemmaWord\n this.languageID = languageID\n\n this.shortDefs = []\n this.fullDefs = []\n }\n\n /**\n * A function that is used to instantiate a DefinitionSet object from a JSON object.\n *\n * @param {object} jsonObject - A JSON object representing DefinitionSet data.\n * @returns {DefinitionSet} A DefinitionSet object populated with data from JSON object.\n */\n static readObject (jsonObject) {\n const languageID = LMF.getLanguageIdFromCode(jsonObject.languageCode)\n\n let definitionSet = new DefinitionSet(jsonObject.lemmaWord, languageID) // eslint-disable-line prefer-const\n\n for (const shortDef of jsonObject.shortDefs) {\n definitionSet.shortDefs.push(Definition.readObject(shortDef))\n }\n for (const fullDef of jsonObject.fullDefs) {\n definitionSet.fullDefs.push(Definition.readObject(fullDef))\n }\n\n return definitionSet\n }\n\n /**\n * Checks if any short definitions are stored within this object.\n *\n * @returns {boolean} - true if any definitions are stored, false otherwise.\n */\n get hasShortDefs () {\n return this.shortDefs.length > 0\n }\n\n /**\n * Checks if any full definitions are stored within this object.\n *\n * @returns {boolean} - true if any definitions are stored, false otherwise.\n */\n get hasFullDefs () {\n return this.fullDefs.length > 0\n }\n\n /**\n * Check to see if the DefinitionSet is empty\n *\n * @returns {boolean} true if empty false if there is at least one definition\n */\n isEmpty () {\n return this.shortDefs.length === 0 && this.fullDefs.length === 0\n }\n\n /**\n * Appends one or more definitions to a list of short definitions.\n *\n * @param {Definition | Definition[]} definitions - One or more definition objects to add.\n * @returns {Definition[]} A list of short definitions this object has.\n */\n appendShortDefs (definitions) {\n // TODO: check for duplicates?\n if (definitions) {\n if (!Array.isArray(definitions)) { definitions = [definitions] }\n this.shortDefs = this.shortDefs.concat(definitions)\n }\n return this.shortDefs\n }\n\n /**\n * clear accumulated short definitions\n */\n clearShortDefs () {\n this.shortDefs = []\n }\n\n /**\n * Appends one or more definitions to a list of full definitions.\n *\n * @param {Definition | Definition[]} definitions - One or more definition objects to add.\n * @returns {Definition[]} A list of full definitions this object has.\n */\n appendFullDefs (definitions) {\n // TODO: check for duplicates?\n if (definitions) {\n if (!Array.isArray(definitions)) { definitions = [definitions] }\n this.fullDefs = this.fullDefs.concat(definitions)\n }\n return this.fullDefs\n }\n\n /**\n * clear accumulated full definitions\n */\n clearFullDefs () {\n this.fullDefs = []\n }\n\n convertToJSONObject () {\n const languageCode = LMF.getLanguageCodeFromId(this.languageID)\n return {\n lemmaWord: this.lemmaWord,\n languageCode: languageCode,\n shortDefs: this.shortDefs.map(def => def.convertToJSONObject()),\n fullDefs: this.fullDefs.map(def => def.convertToJSONObject())\n }\n }\n}\n","import { v4 as uuidv4 } from 'uuid'\nimport ResourceProvider from './resource_provider.js'\n\nclass Definition {\n constructor (text, language, format, lemmaText) {\n this.text = text\n this.language = language\n this.format = format\n this.lemmaText = lemmaText\n\n this.ID = uuidv4()\n }\n\n static readObject (jsonObject) {\n // eslint-disable-next-line prefer-const\n let definition = new Definition(jsonObject.text, jsonObject.language, jsonObject.format, jsonObject.lemmaText)\n\n if (jsonObject.ID) {\n definition.ID = jsonObject.ID\n }\n\n if (jsonObject.provider) {\n const provider = ResourceProvider.readObject(jsonObject.provider)\n return ResourceProvider.getProxy(provider, definition)\n } else {\n return definition\n }\n }\n\n convertToJSONObject () {\n // eslint-disable-next-line prefer-const\n let result = {\n text: this.text,\n language: this.language,\n format: this.format,\n lemmaText: this.lemmaText,\n ID: this.ID\n }\n\n if (this.provider) {\n result.provider = this.provider.convertToJSONObject()\n }\n return result\n }\n}\nexport default Definition\n","'use strict'\nimport * as Constants from './constants.js'\nimport Definition from './definition.js'\nimport DefinitionSet from './definition-set'\nimport Feature from './feature.js'\nimport GrmFeature from './grm-feature.js'\nimport FeatureType from './feature_type.js'\nimport FeatureList from './feature_list.js'\nimport FeatureImporter from './feature_importer.js'\nimport LanguageModelFactory from './language_model_factory.js'\nimport HomonymGroup from './homonym-group.js'\nimport Homonym from './homonym.js'\nimport Lexeme from './lexeme.js'\nimport Lemma from './lemma.js'\nimport Inflection from './inflection.js'\nimport LatinLanguageModel from './latin_language_model.js'\nimport GreekLanguageModel from './greek_language_model.js'\nimport ArabicLanguageModel from './arabic_language_model.js'\nimport PersianLanguageModel from './persian_language_model.js'\nimport GeezLanguageModel from './geez_language_model.js'\nimport ChineseLanguageModel from './chinese_language_model.js'\nimport SyriacLanguageModel from './syriac_language_model.js'\nimport ResourceProvider from './resource_provider.js'\nimport PsEvent from './ps-events/ps-event.js'\nimport PsEventData from './ps-events/ps-event-data.js'\n\nimport Translation from './translation.js'\nimport TextQuoteSelector from './w3c/text-quote-selector.js'\nimport WordUsageExample from './texts/word-usage-example.js'\nimport Author from './texts/author.js'\nimport TextWork from './texts/text-work.js'\n\nimport WordItem from './word-item.js'\nimport WordList from './word-list.js'\n\nimport TreebankDataItem from './treebank_data_item.js'\nimport Logger from './logging/logger.js'\n\nimport Options from './options/options.js'\n\nimport DefaultsLoader from './storages/defaults-loader.js'\nimport ExtensionSyncStorage from './storages/extension-sync-storage.js'\nimport LocalStorageArea from './storages/local-storage-area.js'\nimport RemoteAuthStorageArea from './storages/remote-auth-storage-area.js'\nimport TempStorageArea from './storages/temp-storage-area.js'\n\nimport Collection from './dts/collection.js'\nimport Resource from './dts/resource.js'\n\nexport {\n Constants,\n Definition,\n DefinitionSet,\n Feature,\n GrmFeature,\n FeatureType,\n FeatureList,\n FeatureImporter,\n Inflection,\n LanguageModelFactory,\n HomonymGroup,\n Homonym,\n Lexeme,\n Lemma,\n LatinLanguageModel,\n GreekLanguageModel,\n ArabicLanguageModel,\n PersianLanguageModel,\n GeezLanguageModel,\n ChineseLanguageModel,\n SyriacLanguageModel,\n ResourceProvider,\n Translation,\n PsEvent,\n PsEventData,\n TextQuoteSelector,\n WordUsageExample,\n Author,\n TextWork,\n WordItem,\n WordList,\n TreebankDataItem,\n Logger,\n Options,\n DefaultsLoader,\n ExtensionSyncStorage,\n LocalStorageArea,\n RemoteAuthStorageArea,\n TempStorageArea,\n\n Collection,\n Resource\n}\n","import Resource from './resource.js'\r\n\r\nexport default class Collection {\r\n /**\r\n * Created from DTS API Json\r\n *\r\n * @param {number} totalItems - amount of items in a collection\r\n * @param {string} title\r\n * @param {string} id\r\n * @param {string} baseUrl - baseURL for DTS API\r\n * @param {string} description\r\n */\r\n constructor ({ totalItems, title, id, baseUrl, description, pagination } = {}) {\r\n this.totalItems = totalItems\r\n this.title = title\r\n this.id = id\r\n this.baseUrl = baseUrl\r\n this.description = description\r\n\r\n this.members = []\r\n this.resources = []\r\n\r\n if (pagination) {\r\n this.pagination = this.definePagination(pagination)\r\n }\r\n }\r\n\r\n /**\r\n * Adds level - membered collection or resource\r\n *\r\n * @param {JSON Object} jsonObj - described in Collection/Resource constructors\r\n */\r\n addMember (jsonObj) {\r\n if (jsonObj.type === 'Collection') {\r\n this.members.push(new Collection(jsonObj))\r\n }\r\n if (jsonObj.type === 'Resource') {\r\n this.resources.push(new Resource(jsonObj))\r\n }\r\n }\r\n\r\n /**\r\n * @returns {string} - title with totalItems in brackets\r\n */\r\n get formattedTitle () {\r\n const totalItems = this.totalItems ? ` (${this.totalItems})` : ''\r\n return `${this.title}${totalItems}`\r\n }\r\n\r\n /**\r\n * @returns {object} - data for creating link for next step retrieval (descendant)\r\n */\r\n get linkData () {\r\n return {\r\n baseUrl: this.baseUrl,\r\n totalItems: this.totalItems,\r\n formattedTitle: this.formattedTitle,\r\n title: this.title,\r\n id: this.id,\r\n type: 'collection'\r\n }\r\n }\r\n\r\n /**\r\n * @returns {Array[Object]} - array of links from membered collections\r\n */\r\n get membersLinks () {\r\n return this.members.map(memberCollection => memberCollection.linkData)\r\n }\r\n\r\n /**\r\n * @returns {Array[Object]} - array of links from membered resources\r\n */\r\n get resourcesLinks () {\r\n return this.resources.map(resource => resource.linkData)\r\n }\r\n\r\n /**\r\n * @returns {Array[Object]} - array of links - collections or resources\r\n */\r\n get links () {\r\n if (this.members.length > 0) {\r\n return this.membersLinks\r\n } else if (this.resources.length > 0) {\r\n return this.resourcesLinks\r\n }\r\n return []\r\n }\r\n\r\n extractPageNum (link) {\r\n if (link) {\r\n const pageData = link.match(/page=(\\d+)$/)\r\n return pageData ? parseInt(pageData[1]) : null\r\n }\r\n return null\r\n }\r\n\r\n definePagination (pagination) {\r\n const pagintaionFinal = {\r\n first: this.extractPageNum(pagination.first),\r\n next: this.extractPageNum(pagination.next),\r\n last: this.extractPageNum(pagination.last),\r\n previous: this.extractPageNum(pagination.previous)\r\n }\r\n\r\n pagintaionFinal.current = pagintaionFinal.next ? pagintaionFinal.next - 1 : (pagintaionFinal.previous ? pagintaionFinal.previous + 1 : 1)\r\n return pagintaionFinal\r\n }\r\n}\r\n","export default class Resource {\r\n /**\r\n * @param {string} title\r\n * @param {string} id\r\n * @param {string} baseUrl - baseURL for DTS API\r\n * @param {string} description\r\n */\r\n constructor ({ title, id, baseUrl, description } = {}) {\r\n this.title = title\r\n this.id = id\r\n this.baseUrl = baseUrl\r\n this.description = description\r\n }\r\n\r\n /**\r\n *\r\n * @param {Array[String]} refs - a list of refs to passages\r\n * @param {string} passage - a url template for getting XML document\r\n */\r\n uploadRefs ({ refs, passage } = {}) {\r\n this.passage = passage\r\n this.refs = refs\r\n }\r\n\r\n /**\r\n * @returns {object} - data for creating link for next step retrieval (descendant)\r\n */\r\n get linkData () {\r\n return {\r\n baseUrl: this.baseUrl,\r\n title: this.title,\r\n id: this.id,\r\n description: this.description,\r\n type: 'resource',\r\n resource: this\r\n }\r\n }\r\n\r\n get refsLinks () {\r\n return this.refs.map(ref => {\r\n return {\r\n baseUrl: this.baseUrl,\r\n id: this.id,\r\n ref,\r\n type: 'document'\r\n }\r\n })\r\n }\r\n}\r\n","import LanguageModelFactory from './language_model_factory.js'\nimport FeatureImporter from './feature_importer.js'\nimport Logger from './logging/logger.js'\n\n/**\n * A grammatical feature object, that can replace both Feature and FeatureType objects.\n */\nexport default class Feature {\n /**\n *\n * @param {string} type - A type of the feature, allowed values are specified in 'type' getter.\n * @param {string | string[] | string[][]} data - Single or multiple values, in different combinations.\n *\n * If a single value with no sort order is provided, data format will be:\n * value\n * This value will be assigned a default sort order.\n *\n * If a single value with sort order is provided, data format will be:\n * [[value, sortOrder]]\n *\n * If multiple values without sort order are provided, data format will be:\n * [value1, value2, value3, ...]\n * Items will be assigned a sort order according to their order in an array.\n * The first item will receive a highest sort order, the last one will receive the lowest, one.\n *\n * If multiple values with sort order are provided, data format will be:\n * [[value1, sortOrder1], [value2, sortOrder2], [value3, sortOrder3], ...]\n * If a sort order is omitted anywhere, it will be set to a default sort order.\n *\n * Each value of a feature has its `sortOrder` property. This value is used to soft values of a feature\n * between themselves. Feature object has a `sortOrder` property of its own, too. It is used\n * to compare two Feature objects between themselves.\n *\n * @param {symbol} languageID - A language ID of a feature\n * @param {number} sortOrder - A sort order of a feature when multiple features are compared.\n * @param allowedValues - If feature has a restricted set of allowed values, here will be a list of those\n * values. An order of those values can define a sort order.\n */\n constructor (type, data, languageID, sortOrder = 1, allowedValues = []) {\n if (!Feature.isAllowedType(type)) {\n throw new Error('Features of \"' + type + '\" type are not supported.')\n }\n if (!data) {\n throw new Error('Feature should have a non-empty value(s).')\n }\n if (!languageID) {\n throw new Error('No language ID is provided')\n }\n\n this.type = type\n this.languageID = languageID\n this.sortOrder = sortOrder\n this.allowedValues = allowedValues\n\n /**\n * Keeps feature values along with their sort order.\n * Items with higher sort order usually have more importance,\n * but how to interpret the sortOrder value is ultimately implementation-dependent.\n *\n * @type {{sortOrder: number, value: *}[]}\n * @private\n */\n this._data = Feature.dataValuesFromInput(data)\n this.sort()\n }\n\n /**\n *\n * @param {string | string[] | string[][]} data - Feature values with, possibly, their sort order.\n * @see {@link Feature#constructor} for more details about possible values of `data` parameter.\n * @returns {{sortOrder: number, value: *}[]} Array of object in a format that will be used to store\n * data values along with their sort order within a Feature object\n */\n static dataValuesFromInput (data) {\n let normalized\n if (!Array.isArray(data)) {\n // Single value with no sort order\n normalized = [[data, this.defaultSortOrder]]\n } else if (!Array.isArray(data[0])) {\n /*\n If several values are provided without any explicit sort order, they will be\n assigned a sort order automatically, according to their array index number.\n The first value item in an array will receive the highest sort order equal\n to the length of the array. The last item will have the lowest sort order, one.\n */\n normalized = data.map((v, i) => [v, data.length - i])\n } else {\n // Value has all the data, including a sort order\n normalized = data\n }\n return normalized.map(d => { return { value: d[0], sortOrder: Number.parseInt(d[1]) } })\n }\n\n /**\n *\n * @param featureData\n */\n static newFromFtr (featureData) {\n\n }\n\n static get types () {\n return {\n /**\n * @deprecated : Use `fullForm` where appropriate instead\n */\n word: 'word',\n fullForm: 'full form',\n hdwd: 'headword',\n part: 'part of speech', // Part of speech\n number: 'number',\n case: 'case',\n grmCase: 'case', // A synonym of `case`\n declension: 'declension',\n gender: 'gender',\n type: 'type',\n class: 'class',\n grmClass: 'class', // A synonym of `class`\n conjugation: 'conjugation',\n comparison: 'comparison',\n tense: 'tense',\n voice: 'voice',\n mood: 'mood',\n person: 'person',\n frequency: 'frequency', // How frequent this word is\n meaning: 'meaning', // Meaning of a word\n source: 'source', // Source of word definition\n footnote: 'footnote', // A footnote for a word's ending\n dialect: 'dialect', // a dialect identifier\n note: 'note', // a general note\n pronunciation: 'pronunciation',\n age: 'age',\n area: 'area',\n geo: 'geo', // geographical data\n kind: 'kind', // verb kind information\n derivtype: 'derivtype',\n stemtype: 'stemtype',\n morph: 'morph', // general morphological information\n var: 'var', // variance?\n /** for CJK languages only **/\n radical: 'radical',\n /** used for Syriac **/\n kaylo: 'kaylo',\n state: 'state'\n\n }\n }\n\n static isAllowedType (value) {\n return Object.values(this.types).includes(`${value}`)\n }\n\n static get defaultSortOrder () {\n return 1\n }\n\n static get joinSeparator () {\n return ' '\n }\n\n static get defaultImporterName () {\n return 'default'\n }\n\n /**\n * Test to see if this feature allows unrestricted values.\n *\n * @returns {boolean} true if unrestricted false if not.\n */\n get allowsUnrestrictedValues () {\n /*\n If `allowedValues` array is empty then there are no value restrictions\n */\n return this.allowedValues.length === 0\n }\n\n /**\n * Defines a sort order of feature values. Values are sorted according to their sort order\n * (a number starting from one). If several values have the same sort order, they will be\n * sorted alphabetically according to their values.\n * Sort order is deterministic.\n */\n sort () {\n this._data.sort((a, b) => a.sortOrder !== b.sortOrder ? b.sortOrder - a.sortOrder : a.value.localeCompare(b.value))\n }\n\n /**\n * Compares a feature's values to another feature's values for sorting\n *\n * @param {Feature} otherFeature the feature to compare this feature's values to\n * @returns {number} < 1 if this feature should be sorted first, 0 if they are equal and -1 if this feature should be sorted second\n */\n compareTo (otherFeature) {\n // the data values are sorted upon construction and insertion so we only should need to look at the first values\n // feature sortOrders are descending (i.e. 5 sorts higher than 1)\n if (otherFeature) {\n return otherFeature._data[0].sortOrder - this._data[0].sortOrder\n } else {\n // if the other feature isn't defined, this one sorts first\n return -1\n }\n }\n\n get items () {\n return this._data\n }\n\n /**\n * Returns a single value string. If feature has a single value, this value will be returned.\n * If it has multiple values, those values will be concatenated with a default separator and\n * returned in a single string. Values composing this string are sorted according\n * to each value's sort order.\n * NOTE: If object contains a single value and it is a number, it will be converted to a string.\n *\n * @returns {string} A single value string.\n */\n get value () {\n return this.values.join(this.constructor.joinSeparator)\n }\n\n /**\n * Returns a feature value, if Feature object contains a single value. If no value is stored,\n * returns `undefined`. If feature has more than one value, throws an error.\n * This method allows to avoid conversion of a value to the string type as is the case\n * with other methods.\n *\n * @returns {undefined|*} - A single value in a format in which it is stored or `undefined`\n * if feature has no value.\n */\n get singleValue () {\n if (this._data.length === 0) return\n if (this._data.length > 1) throw new Error(Feature.errMsgs.NO_SINGLE_VALUE)\n return this._data[0].value\n }\n\n /**\n * Returns an array of string values of a feature, sorted according to each item's sort order.\n * If a feature contains a single feature, an array with one value will be returned.\n *\n * @returns {*[]} An array of values in a format in which they are stored in the Feature object.\n */\n get values () {\n return this._data.map(v => v.value)\n }\n\n /**\n * Retrieves a value object by name. Can be used to update a value object directly.\n *\n * @param {string} featureValue - A feature value of an object to retrieve.\n */\n getValue (featureValue) {\n return this._data.find(v => v.value === featureValue)\n }\n\n /**\n * Returns a number of feature values.\n *\n * @retrun {number] A quantity of feature values\n */\n get valQty () {\n return this._data.length\n }\n\n get isEmpty () {\n return this.valQty === 0\n }\n\n get isSingle () {\n return this.valQty === 1\n }\n\n get isMultiple () {\n return this.valQty > 1\n }\n\n /**\n * A string representation of a feature.\n *\n * @returns {string}\n */\n toString () {\n return this.value\n }\n\n /**\n * Examines the feature for a specific value.\n *\n * @param {string} value\n * @returns {boolean} true if the value is included in the feature's values.\n */\n hasValue (value) {\n return this.values.includes(value)\n }\n\n /**\n * Checks if this feature has all value from an array.\n *\n * @param {string[]} values - An array of values to check for.\n * @returns {boolean} true if the value is included in the feature's values.\n */\n hasValues (values) {\n let hasValues = true\n for (const value of values) {\n hasValues = hasValues && this.hasValue(value)\n }\n return hasValues\n }\n\n /**\n * Checks if this feature has some value from an array.\n *\n * @param {string[]} values - An array of values to check for.\n * @returns {boolean} true if the value is included in the feature's values.\n */\n hasSomeValues (values) {\n let hasValues = false\n for (const value of values) {\n hasValues = hasValues || this.hasValue(value)\n }\n return hasValues\n }\n\n get valuesUnrestricted () {\n return this.allowedValues.length === 0\n }\n\n /**\n * Two features are considered fully equal if they are of the same type, have the same language,\n * and the same set of feature values in the same order.\n *\n * @param {Feature} feature - A GrmFtr object this feature should be compared with.\n * @returns {boolean} True if features are equal, false otherwise.\n */\n isEqual (feature) {\n return feature &&\n this.type === feature.type &&\n LanguageModelFactory.compareLanguages(this.languageID, feature.languageID) &&\n this.value === feature.value\n }\n\n /**\n * Adds a single new value to the existing feature object.\n * This function is chainable.\n *\n * @param {string} value - A feature value.\n * @param {number} sortOrder - A sort order.\n * @returns {Feature} - Self reference for chaining.\n */\n addValue (value, sortOrder = this.constructor.defaultSortOrder) {\n if (!this.hasValue(value)) {\n this._data.push({\n value: value,\n sortOrder: sortOrder\n })\n this.sort() // Resort an array to place an inserted value to the proper place\n } else {\n Logger.getInstance().warn(`Value \"${value}\" already exists. If you want to change it, use \"getValue\" to access it directly.`)\n }\n return this\n }\n\n /**\n * Adds multiple new values to the existing feature object.\n * This function is chainable.\n *\n * @param {string | string[] | string[][]} data - Single or multiple values, in different combinations.\n * @returns {Feature} - Self reference for chaining.\n */\n addValues (data) {\n const normalizedData = this.constructor.dataValuesFromInput(data)\n const values = normalizedData.map(v => v.value)\n if (!this.hasSomeValues(values)) {\n this._data = this._data.concat(normalizedData)\n this.sort() // Resort an array to place an inserted value to the proper place\n } else {\n Logger.getInstance().warn(`One or several values from \"${values}\" already exist. If you want to change it, use \"getValue\" to access a value directly.`)\n }\n return this\n }\n\n /**\n * Removes a single value from the existing feature object.\n *\n * @param value\n */\n removeValue (value) {\n // TODO: Do we need it?\n Logger.getInstance().warn('This feature is not implemented yet')\n }\n\n /**\n * Creates a new single value Feature object of the same type and same language,\nbut with a different feature value.\nThis can be used when one feature defines a type and it is necessary\nto create other items of the same type.\n *\n * @param {string} value - A value of a feature.\n * @param sortOrder\n * @param {number} sortOrder.\n * @returns {Feature} A new Ftr object.\n */\n createFeature (value, sortOrder = this.constructor.defaultSortOrder) {\n // TODO: Add a check of if the value exists in a source Feature object\n return new Feature(this.type, [[value, sortOrder]], this.languageID, this.sortOrder, this.allowedValues)\n }\n\n /**\n * Creates a multiple value Feature object of the same type and same language,\n * but with a different feature values.\n *\n * @param {string | string[] | string[][]} data - Single or multiple values, in different combinations,\n * formatted according to rules described in a Ftr constructor.\n * @returns {Feature} A new Ftr object.\n */\n createFeatures (data) {\n return new Feature(this.type, data, this.languageID, this.sortOrder, this.allowedValues)\n }\n\n /**\n * Creates an array of Feature objects where each Feature object is matching one feature value\n * form the values of this object.\n * Useful when the current objects is a type feature and it is necessary to create an array\n * of Feature objects for the type from it.\n *\n * @returns {Feature[]} - An array of Feature objects. Each object represents one feature value\n * from the current object.\n */\n get ownFeatures () {\n return this.values.map(v => new Feature(this.type, v, this.languageID, 1, this.allowedValues))\n }\n\n /**\n * Create a copy of the feature object.\n */\n getCopy () {\n const values = this._data.map(item => [item.value, item.sortOrder])\n return new Feature(this.type, values, this.languageID, this.sortOrder, this.allowedValues.slice())\n }\n\n /**\n * Adds an importer to the internal list.\n *\n * @param {string} name - A name of an importer.\n * @param {FeatureImporter} importer - A `FeatureImporter` object.\n */\n addImporter (importer = new FeatureImporter(), name = this.constructor.defaultImporterName) {\n if (!this.importers) {\n this.importers = new Map()\n }\n this.importers.set(name, importer)\n return importer\n }\n\n getImporter (name = this.constructor.defaultImporterName) {\n if (!this.importers || !this.importers.has(name)) {\n throw new Error(`Importer \"${name}\" does not exist`)\n }\n return this.importers.get(name)\n }\n\n /**\n * Adds feature values from the imported values.\n *\n * @param {string | string[]} foreignData - A single value or an array of values from a third-party source.\n * @param {string} name - A name of an importer.\n * @returns {Feature} - A new Ftr object.\n */\n addFromImporter (foreignData, name = this.constructor.defaultImporterName) {\n if (!this.importers || !this.importers.has(name)) {\n throw new Error(`Importer \"${name}\" does not exist`)\n }\n const importer = this.importers.get(name)\n foreignData = this.constructor.dataValuesFromInput(foreignData)\n this._data.push(...foreignData.map(fv => { return { value: importer.get(fv.value), sortOrder: fv.sortOrder } }))\n this.sort()\n return this\n }\n\n /**\n * Creates a new feature of the same type and with the same language from the imported values.\n *\n * @param {string | string[]} foreignData - A single value or an array of values from a third-party source.\n * @param {string} name - A name of an importer.\n * @returns {Feature} - A new Ftr object.\n */\n createFromImporter (foreignData, name = this.constructor.defaultImporterName) {\n if (!this.importers || !this.importers.has(name)) {\n throw new Error(`Importer \"${name}\" does not exist`)\n }\n const importer = this.importers.get(name)\n if (!Array.isArray(foreignData)) {\n foreignData = [foreignData]\n }\n let values = foreignData.map(fv => importer.get(fv))\n /*\n Some values may be mapped into multiple values. For them an importer will return an array of values instead of a single value.\n The values will be a multidimensional array that will require flattening.\n */\n values = values.reduce((acc, cv) => acc.concat(cv), [])\n return new Feature(this.type, values, this.languageID, this.sortOrder, this.allowedValues)\n }\n\n convertToJSONObject () {\n const data = this._data.map(dataItem => [dataItem.value, dataItem.sortOrder])\n return {\n type: this.type,\n languageCode: LanguageModelFactory.getLanguageCodeFromId(this.languageID),\n sortOrder: this.sortOrder,\n allowedValues: this.allowedValues,\n data: data\n }\n }\n\n static readObject (jsonObject) {\n const languageID = LanguageModelFactory.getLanguageIdFromCode(jsonObject.languageCode)\n return new Feature(jsonObject.type, jsonObject.data, languageID, jsonObject.sortOrder, jsonObject.allowedValues)\n }\n}\n\nFeature.errMsgs = {\n NO_SINGLE_VALUE: 'More than one value stored'\n}\n","class FeatureImporter {\n /**\n * @param defaults\n * @param {boolean} returnUnknown - If true, and a source value is not found in the importer,\n * a source value will be returned without any change (a passthrough). If false, an Error\n * will be thrown for unknown source values.\n * @returns {FeatureImporter}\n */\n constructor (defaults = [], returnUnknown = false) {\n this.hash = {}\n for (const value of defaults) {\n this.map(value, value)\n }\n this.returnUnknown = returnUnknown\n return this\n }\n\n /**\n * Sets mapping between external imported value and one or more library standard values. If an importedValue\n * is already in a hash table, old libraryValue will be overwritten with the new one.\n *\n * @param {string} importedValue - External value\n * @param {object|object[]|string|string[]} libraryValue - Library standard value\n */\n map (importedValue, libraryValue) {\n if (!importedValue) {\n throw new Error('Imported value should not be empty.')\n }\n\n if (!libraryValue) {\n throw new Error('Library value should not be empty.')\n }\n\n this.hash[importedValue] = libraryValue\n return this\n }\n\n /**\n * Checks if value is in a map.\n *\n * @param {string} importedValue - A value to test.\n * @returns {boolean} - Tru if value is in a map, false otherwise.\n */\n has (importedValue) {\n return this.hash.hasOwnProperty(importedValue)\n }\n\n /**\n * Returns one or more library standard values that match an external value\n *\n * @param {string} sourceValue - External value\n * @returns {object|string} One or more of library standard values\n */\n get (sourceValue) {\n if (this.has(sourceValue)) {\n return this.hash[sourceValue]\n } else if (this.returnUnknown) {\n return sourceValue\n } else {\n throw new Error('A value \"' + sourceValue + '\" is not found in the importer.')\n }\n }\n}\nexport default FeatureImporter\n","/**\n * A list of grammatical features that characterizes a language unit. Has some additional service methods,\n * compared with standard storage objects.\n */\nclass FeatureList {\n /**\n * Initializes a feature list.\n *\n * @param {Feature[]} features - Features that build the list (optional, can be set later).\n */\n constructor (features = []) {\n this._features = []\n this._types = {}\n this.add(features)\n }\n\n add (features) {\n if (!features || !Array.isArray(features)) {\n throw new Error('Features must be defined and must come in an array.')\n }\n\n for (const feature of features) {\n this._features.push(feature)\n this._types[feature.type] = feature\n }\n }\n\n /**\n * Returns an array of grouping features.\n *\n * @returns {FeatureType[]} - An array of grouping features.\n */\n get items () {\n return this._features\n }\n\n forEach (callback) {\n this._features.forEach(callback)\n }\n\n /**\n * Returns a feature of a particular type. If such feature does not exist in a list, returns undefined.\n *\n * @param {string} type - Feature type as defined in `types` object.\n * @returns {FeatureType | undefined} A feature if a particular type if contains it. Undefined otherwise.\n */\n ofType (type) {\n if (this.hasType(type)) {\n return this._types[type]\n }\n }\n\n /**\n * Checks whether a feature list has a feature of a specific type.\n *\n * @param {string} type - Feature type as defined in `types` object.\n * @returns {boolean} Whether a feature list has a feature of a particular type.\n */\n hasType (type) {\n return this._types.hasOwnProperty(type)\n }\n}\nexport default FeatureList\n","import Feature from './feature.js'\nimport FeatureImporter from './feature_importer.js'\nimport LMF from './language_model_factory'\nimport Logger from './logging/logger.js'\n\n/**\n * @deprecated Use Feature instead\n * Definition class for a (grammatical) feature. Stores type information and (optionally) all possible values of the feature.\n * It serves as a feature generator. If list of possible values is provided, it can generate a Feature object\n * each time a property that corresponds to a feature value is accessed. If no list of possible values provided,\n * a Feature object can be generated with get(value) method.\n *\n * An order of values determines a default sort and grouping order. If two values should have the same order,\n * they should be grouped within an array: value1, [value2, value3], value4. Here 'value2' and 'value3' have\n * the same priority for sorting and grouping.\n */\nclass FeatureType {\n // TODO: value checking\n /**\n * Creates and initializes a Feature Type object.\n *\n * @param {string} type - A type of the feature, allowed values are specified in 'types' object.\n * @param {string[] | string[][]} values - A list of allowed values for this feature type.\n * If an empty array is provided, there will be no\n * allowed values as well as no ordering (can be used for items that do not need or have a simple order,\n * such as footnotes).\n * @param {string|symbol} language - A language of a feature type.\n */\n constructor (type, values, language) {\n if (!values || !Array.isArray(values)) {\n throw new Error('Values should be an array (or an empty array) of values.')\n }\n if (!language) {\n throw new Error('FeatureType constructor requires a language')\n }\n\n this.type = type\n this.languageID = undefined\n this.languageCode = undefined\n ;({ languageID: this.languageID, languageCode: this.languageCode } = LMF.getLanguageAttrs(language))\n\n /*\n This is a sort order index for a grammatical feature values. It is determined by the order of values in\n a 'values' array.\n */\n this._orderIndex = []\n this._orderLookup = {}\n\n for (const [index, value] of values.entries()) {\n this._orderIndex.push(value)\n if (Array.isArray(value)) {\n for (const element of value) {\n this[element] = new Feature(this.type, element, this.languageID)\n this._orderLookup[element] = index\n }\n } else {\n this[value] = new Feature(this.type, value, this.languageID)\n this._orderLookup[value] = index\n }\n }\n }\n\n /**\n * This is a compatibility function for legacy code.\n *\n * @returns {string} A language code.\n */\n get language () {\n Logger.getInstance().warn('Please use a \"languageID\" instead of a \"language\"')\n return this.languageCode\n }\n\n /**\n * test to see if this FeatureType allows unrestricted values\n *\n * @returns {boolean} true if unrestricted false if not\n */\n hasUnrestrictedValue () {\n return this.orderedValues.length === 1 && this.orderedValues[0] === FeatureType.UNRESTRICTED_VALUE\n }\n\n /**\n * Return a Feature with an arbitrary value. This value would not be necessarily present among FeatureType values.\n * This can be especially useful for features that do not set: a list of predefined values, such as footnotes.\n *\n * @param value\n * @param {int} sortOrder\n * @returns {Feature}\n */\n get (value, sortOrder = 1) {\n if (value) {\n return new Feature(this.type, [[value, sortOrder]], this.languageID)\n } else {\n throw new Error('A non-empty value should be provided.')\n }\n }\n\n /**\n *\n * @param {string[][]} data - An array of value arrays as: [[value1, sortOrder1], [value2, sortOrder2]]\n * @returns {Feature}\n */\n getValues (data) {\n return new Feature(this.type, data, this.languageID)\n }\n\n getFromImporter (importerName, value) {\n let mapped\n try {\n mapped = this.importer[importerName].get(value)\n } catch (e) {\n // quietly catch not found and replace with default\n mapped = this.get(value)\n }\n return mapped\n }\n\n /**\n * Creates and returns a new importer with a specific name. If an importer with this name already exists,\n * an existing Importer object will be returned.\n *\n * @param {string} name - A name of an importer object\n * @returns {Importer} A new or existing Importer object that matches a name provided\n */\n addImporter (name) {\n if (!name) {\n throw new Error('Importer should have a non-empty name.')\n }\n this.importer = this.importer || {}\n this.importer[name] = this.importer[name] || new FeatureImporter()\n return this.importer[name]\n }\n\n /**\n * Return copies of all feature values as Feature objects in a sorted array, according to feature type's sort order.\n * For a similar function that returns strings instead of Feature objects see orderedValues().\n *\n * @returns {Feature[] | Feature[][]} Array of feature values sorted according to orderIndex.\n * If particular feature contains multiple feature values (i.e. `masculine` and `feminine` values combined),\n * an array of Feature objects will be returned instead of a single Feature object, as for single feature values.\n */\n get orderedFeatures () {\n return this.orderedValues.map((value) => new Feature(this.type, value, this.languageID))\n }\n\n /**\n * Return all feature values as strings in a sorted array, according to feature type's sort order.\n * This is a main method that specifies a sort order of the feature type. orderedFeatures() relies\n * on this method in providing a sorted array of feature values. If you want to create\n * a custom sort order for a particular feature type that will depend on some options that are not type-related,\n * create a wrapper around this function providing it with options arguments so it will be able to decide\n * in what order those features will be based on those arguments.\n * For a similar function that returns Feature objects instead of strings see orderedValues().\n *\n * @returns {string[]} Array of feature values sorted according to orderIndex.\n * If particular feature contains multiple feature values (i.e. `masculine` and `feminine` values combined),\n * an array of strings will be returned instead of a single strings, as for single feature values.\n */\n get orderedValues () {\n return this._orderIndex\n }\n\n /**\n * Returns a lookup table for type values as:\n * {value1: order1, value2: order2}, where order is a sort order of an item. If two items have the same sort order,\n * their order value will be the same.\n *\n * @returns {object}\n */\n get orderLookup () {\n return this._orderLookup\n }\n\n /**\n * Sets an order of grammatical feature values for a grammatical feature. Used mostly for sorting, filtering,\n * and displaying.\n *\n * @param {Feature[] | Feature[][]} values - a list of grammatical features that specify their order for\n * sorting and filtering. Some features can be grouped as [[genders.masculine, genders.feminine], LibLatin.genders.neuter].\n * It means that genders.masculine and genders.feminine belong to the same group. They will have the same index\n * and will be stored inside an _orderIndex as an array. genders.masculine and genders.feminine will be grouped together\n * during filtering and will be in the same bin during sorting.\n *\n */\n set order (values) {\n if (!values || (Array.isArray(values) && values.length === 0)) {\n throw new Error('A non-empty list of values should be provided.')\n }\n\n // If a single value is provided, convert it into an array\n if (!Array.isArray(values)) {\n values = [values]\n }\n\n for (const value of values) {\n if (Array.isArray(value)) {\n for (const element of value) {\n if (!this.hasOwnProperty(element.value)) {\n throw new Error('Trying to order an element with \"' + element.value + '\" value that is not stored in a \"' + this.type + '\" type.')\n }\n\n if (element.type !== this.type) {\n throw new Error('Trying to order an element with type \"' + element.type + '\" that is different from \"' + this.type + '\".')\n }\n\n if (!LMF.compareLanguages(element.languageID, this.languageID)) {\n throw new Error(`Trying to order an element with language \"${element.languageID.toString()}\" that is different from \"${this.languageID.toString()}\"`)\n }\n }\n } else {\n if (!this.hasOwnProperty(value.value)) {\n throw new Error('Trying to order an element with \"' + value.value + '\" value that is not stored in a \"' + this.type + '\" type.')\n }\n\n if (value.type !== this.type) {\n throw new Error('Trying to order an element with type \"' + value.type + '\" that is different from \"' + this.type + '\".')\n }\n\n if (!LMF.compareLanguages(value.languageID, this.languageID)) {\n throw new Error(`Trying to order an element with language \"${value.languageID.toString()}\" that is different from \"${this.languageID.toString()}\"`)\n }\n }\n }\n\n // Erase whatever sort order was set previously\n this._orderLookup = {}\n this._orderIndex = []\n\n // Define a new sort order\n for (const [index, element] of values.entries()) {\n if (Array.isArray(element)) {\n // If it is an array, all values should have the same order\n let elements = [] // eslint-disable-line prefer-const\n for (const subElement of element) {\n this._orderLookup[subElement.value] = index\n elements.push(subElement.value)\n }\n this._orderIndex[index] = elements\n } else {\n // If is a single value\n this._orderLookup[element.value] = index\n this._orderIndex[index] = element.value\n }\n }\n }\n}\nFeatureType.UNRESTRICTED_VALUE = Symbol('unrestricted')\nexport default FeatureType\n","import LanguageModel from './language_model.js'\nimport Feature from './feature.js'\nimport * as Constants from './constants.js'\n\nconst typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n\n/**\n * @class GezLanguageModel is the lass for Ge'ez specific behavior\n */\nexport default class GeezLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_GEEZ }\n\n static get languageCode () { return Constants.STR_LANG_CODE_GEZ }\n\n static get languageCodes () { return [Constants.STR_LANG_CODE_GEZ] }\n\n static get contextForward () { return 0 }\n\n static get contextBackward () { return 0 }\n\n static get direction () { return Constants.LANG_DIR_LTR }\n\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n static get featureValues () {\n return new Map([\n ...LanguageModel.featureValues,\n [\n Feature.types.grmCase,\n [\n // TODO Valid Values for case for gez\n ]\n ],\n [\n Feature.types.number,\n [\n // TODO Valid Values for number for gez\n ]\n ],\n [\n Feature.types.gender,\n [\n // TODO Valid Values for gender for gez\n ]\n ],\n [\n Feature.types.mood,\n [\n // TODO Valid Values for mood for gez\n ]\n ]\n ])\n }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\nfor the current node\n *\n * @param node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * Get a list of valid punctuation for this language\n *\n * @returns {string} a string containing valid punctuation symbols\n */\n static getPunctuation () {\n return \"፡፨።፣፤፥፦፧፠,;:!?'\\\"(){}\\\\[\\\\]<>\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u2020\\u2021\\u201C\\u201D\\u0387\\u00B7\\n\\r\\u200C\\u200D\"\n }\n}\n","import LanguageModel from './language_model.js'\nimport LanguageModelFactory from './language_model_factory.js'\nimport * as Constants from './constants.js'\nimport Feature from './feature.js'\nimport Logger from './logging/logger.js'\n\nimport GreekChars from './languages/greek-chars.js'\n\nlet typeFeatures = new Map() // eslint-disable-line prefer-const\nlet typeFeaturesInitialized = false\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class GreekLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_GREEK }\n static get languageCode () { return Constants.STR_LANG_CODE_GRC }\n static get languageCodes () { return [Constants.STR_LANG_CODE_GRC] }\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get featureValues () {\n /*\n This could be a static variable, but then it will create a circular reference:\n Feature -> LanguageModelFactory -> LanguageModel -> Feature\n */\n return new Map([\n ...LanguageModel.featureValues,\n [\n Feature.types.grmClass,\n [\n Constants.CLASS_DEMONSTRATIVE,\n Constants.CLASS_GENERAL_RELATIVE,\n Constants.CLASS_INDEFINITE,\n Constants.CLASS_INTENSIVE,\n Constants.CLASS_INTERROGATIVE,\n Constants.CLASS_PERSONAL,\n Constants.CLASS_POSSESSIVE,\n Constants.CLASS_RECIPROCAL,\n Constants.CLASS_REFLEXIVE,\n Constants.CLASS_RELATIVE\n ]\n ],\n [\n Feature.types.number,\n [\n Constants.NUM_SINGULAR,\n Constants.NUM_PLURAL,\n Constants.NUM_DUAL\n ]\n ],\n [\n Feature.types.grmCase,\n [\n Constants.CASE_NOMINATIVE,\n Constants.CASE_GENITIVE,\n Constants.CASE_DATIVE,\n Constants.CASE_ACCUSATIVE,\n Constants.CASE_VOCATIVE\n ]\n ],\n [\n Feature.types.declension,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD\n ]\n ],\n [\n Feature.types.tense,\n [\n Constants.TENSE_PRESENT,\n Constants.TENSE_IMPERFECT,\n Constants.TENSE_FUTURE,\n Constants.TENSE_PERFECT,\n Constants.TENSE_PLUPERFECT,\n Constants.TENSE_FUTURE_PERFECT,\n Constants.TENSE_AORIST\n ]\n ],\n [\n Feature.types.voice,\n [\n Constants.VOICE_PASSIVE,\n Constants.VOICE_ACTIVE,\n Constants.VOICE_MEDIOPASSIVE,\n Constants.VOICE_MIDDLE\n ]\n ],\n [\n Feature.types.mood,\n [\n Constants.MOOD_INDICATIVE,\n Constants.MOOD_SUBJUNCTIVE,\n Constants.MOOD_OPTATIVE,\n Constants.MOOD_IMPERATIVE\n ]\n ],\n [\n // TODO full list of greek dialects\n Feature.types.dialect,\n [\n 'attic',\n 'epic',\n 'doric'\n ]\n ]\n ])\n }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\nfor the current node\n *\n * @param node\n */\n static canInflect (node) {\n return true\n }\n\n /**\n * @override\n */\n static grammarFeatures () {\n // TODO this ideally might be grammar specific\n return [Feature.types.part, Feature.types.grmCase, Feature.types.mood, Feature.types.declension, Feature.types.tense, Feature.types.voice]\n }\n\n /**\n * Return a normalized version of a text string which can be used to compare the word for equality\n *\n * @param {string} text the source word or the source text\n * @returns {string} the normalized form of the word (default version just returns the same word,\n * override in language-specific subclass)\n * @type string\n */\n static normalizeText (text) {\n // we normalize greek to NFC - Normalization Form Canonical Composition\n if (text) {\n text = text.normalize('NFC')\n // normalize the right single quotation at the end (elision) to Greek Koronois \\u1fbd\n text = text.replace(/\\u2019$/, '\\u1fbd')\n }\n return text\n }\n\n /**\n * Return a normalized part of speech for a lexeme based upon the lemma and inflection data\n *\n * @param {Lexeme} lexeme the lexeme to normalize\n * @returns {string} the alpheios-normalized part of speech value\n * or null if no part of speech data is present on the lexeme\n **/\n static normalizePartOfSpeechValue (lexeme) {\n if (lexeme.lemma.features[Feature.types.part]) {\n if (lexeme.lemma.features[Feature.types.part].value === Constants.POFS_PARTICLE) {\n // alpheios standard for Greek follows the Perseus Treebank Guidelines\n // which normalize particles as adverbs\n return Constants.POFS_ADVERB\n } else if (lexeme.lemma.features[Feature.types.part].value === Constants.POFS_EXCLAMATION) {\n // alpheios normalizes exclamation to interjection (following treebank guidelines)\n return Constants.POFS_INTERJECTION\n } else {\n return lexeme.lemma.features[Feature.types.part].value\n }\n } else {\n return null\n }\n }\n\n /**\n * Return a normalized feature value, based upon the feature type and supplied value\n *\n * @param {string} featureType the feature type\n * @param {string} featureValue the feature value\n * @returns {string} the alpheios-normalized feature value\n */\n static normalizeFeatureValue (featureType, featureValue) {\n // alpheios standard for Latin is currently following Whitaker, and\n // normalize the gerundive mood to participle\n if (featureType === Feature.types.part && featureValue === Constants.POFS_PARTICLE) {\n return Constants.POFS_ADVERB\n } else if (featureType === Feature.types.part && featureValue === Constants.POFS_EXCLAMATION) {\n // alpheios normalizes exclamation to interjection (following treebank guidelines)\n return Constants.POFS_INTERJECTION\n } else {\n return featureValue\n }\n }\n\n static _tonosToOxia (word) {\n return word.replace(\n /\\u{03AC}/ug, '\\u{1F71}').replace( // alpha\n /\\u{03AD}/ug, '\\u{1F73}').replace( // epsilon\n /\\u{03AE}/ug, '\\u{1F75}').replace( // eta\n /\\u{03AF}/ug, '\\u{1F77}').replace( // iota\n /\\u{03CC}/ug, '\\u{1F79}').replace( // omicron\n /\\u{03CD}/ug, '\\u{1F7B}').replace( // upsilon\n /\\u{03CE}/ug, '\\u{1F7D}').replace( // omega\n /\\u{0390}/ug, '\\u{1FD3}').replace( // iota with dialytika and tonos\n /\\u{03B0}/ug, '\\u{1FE3}') // upsilon with dialytika and tonos\n }\n\n /**\n * @override\n */\n static alternateWordEncodings ({\n word = null, preceding = null, following = null,\n encoding = null, preserveCase = false, includeOriginal = false\n } = {}) {\n // the original alpheios code used the following normalizations\n // 1. When looking up a lemma\n // stripped vowel length\n // stripped caps\n // then if failed, tried again with out these\n // 2. when adding to a word list\n // precombined unicode (vowel length/diacritics preserved)\n // 2. When looking up a verb in the verb paradigm tables\n // it set e_normalize to false, otherwise it was true...\n if (!word) {\n return []\n }\n // make sure it's normalized to NFC\n let normalized = GreekLanguageModel.normalizeText(word) // eslint-disable-line prefer-const\n // and in lower case unless explicitly requested otherwise\n if (!preserveCase) {\n normalized = normalized.toLocaleLowerCase()\n }\n const strippedVowelLength = normalized.replace(\n /[\\u{1FB0}\\u{1FB1}]/ug, '\\u{03B1}').replace(\n /[\\u{1FB8}\\u{1FB9}]/ug, '\\u{0391}').replace(\n /[\\u{1FD0}\\u{1FD1}]/ug, '\\u{03B9}').replace(\n /[\\u{1FD8}\\u{1FD9}]/ug, '\\u{0399}').replace(\n /[\\u{1FE0}\\u{1FE1}]/ug, '\\u{03C5}').replace(\n /[\\u{1FE8}\\u{1FE9}]/ug, '\\u{03A5}').replace(\n /[\\u{00AF}\\u{0304}\\u{0306}]/ug, '') // eslint-disable-line no-misleading-character-class\n\n // Per https://wiki.digitalclassicist.org/Greek_Unicode_duplicated_vowels\n // oxia and tonos are semantically identical and tonos should be preferred over oxia\n // both both should be processed as equivalent. the normalize('NFC') function will\n // normalize oxia to tonos, but some of our dictionary indicies may use oxia so\n // we should allow oxia back in as an alternate encoding\n const tonosToOxia = GreekLanguageModel._tonosToOxia(normalized)\n\n const strippedDiaeresis = normalized.replace(\n /\\u{0390}/ug, '\\u{03AF}').replace(\n /\\u{03AA}/ug, '\\u{0399}').replace(\n /\\u{03AB}/ug, '\\u{03A5}').replace(\n /\\u{03B0}/ug, '\\u{03CD}').replace(\n /\\u{03CA}/ug, '\\u{03B9}').replace(\n /\\u{03CB}/ug, '\\u{03C5}').replace(\n /\\u{1FD2}/ug, '\\u{1F76}').replace(\n /\\u{1FD3}/ug, '\\u{1F77}').replace(\n /\\u{1FD7}/ug, '\\u{1FD6}').replace(\n /\\u{1FE2}/ug, '\\u{1F7A}').replace(\n /\\u{1FE3}/ug, '\\u{1F7B}').replace(\n /\\u{1FE7}/ug, '\\u{1FE6}').replace(\n /\\u{1FC1}/ug, '\\u{1FC0}').replace(\n /\\u{1FED}/ug, '\\u{1FEF}').replace(\n /\\u{1FEE}/ug, '\\u{1FFD}').replace(\n /[\\u{00A8}\\u{0308}]/ug, '') // eslint-disable-line no-misleading-character-class\n // to strip diacritics, rather than list all possible combined vowels with\n // diacritis, decompose, remove the combining accents, and then recompose\n const strippedDiacritics = normalized.normalize('NFD').replace(\n /[\\u{300}\\u{0301}\\u{0304}\\u{0306},\\u{342}]/ug, '').normalize('NFC') // eslint-disable-line no-misleading-character-class\n\n let alternates = []\n if (encoding === 'strippedDiaeresis') {\n alternates.push(strippedDiaeresis)\n } else if (encoding === 'strippedDiacritics') {\n alternates.push(strippedDiacritics)\n } else if (encoding === 'strippedAll') {\n alternates.push(strippedDiaeresis.normalize('NFD').replace(\n /[\\u{300}\\u{0301}\\u{0304}\\u{0306},\\u{342}\\u{314}\\u{313}\\u{345}]/ug, '').normalize('NFC')) // eslint-disable-line no-misleading-character-class\n } else {\n // default is to strip vowel lengths and replace tonos with oxia\n alternates.push(strippedVowelLength)\n if (tonosToOxia !== strippedVowelLength) {\n alternates.push(tonosToOxia)\n }\n }\n if (!includeOriginal) {\n alternates = alternates.filter(w => w !== word)\n }\n return alternates\n }\n\n /**\n * Get a list of valid punctuation for this language\n *\n * @returns {string} a string containing valid punctuation symbols\n */\n static getPunctuation () {\n return '.,;:!?\"(){}\\\\[\\\\]<>\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2020\\u2021\\u201C\\u201D\\u0387\\u00B7\\n\\r\\u200C\\u200D'\n }\n\n /**\n * Sets inflection grammar properties based on its characteristics\n *\n * @param {Inflection} inflection - An inflection object\n * @returns {object} Inflection properties\n */\n static getInflectionConstraints (inflection) {\n const constraints = {\n fullFormBased: false,\n suffixBased: false,\n pronounClassRequired: false\n }\n const formBasedList = [Constants.POFS_PRONOUN, Constants.POFS_NUMERAL, Constants.POFS_ARTICLE]\n if (inflection.hasOwnProperty(Feature.types.part)) {\n if (formBasedList.includes(inflection[Feature.types.part].value)) {\n constraints.fullFormBased = true\n } else {\n constraints.suffixBased = true\n }\n } else {\n Logger.getInstance().warn('Unable to set grammar: part of speech data is missing or is incorrect', inflection[Feature.types.part])\n }\n\n constraints.pronounClassRequired =\n LanguageModelFactory.compareLanguages(GreekLanguageModel.languageID, inflection.languageID) &&\n inflection.hasOwnProperty(Feature.types.part) &&\n inflection[Feature.types.part].value === Constants.POFS_PRONOUN\n\n return constraints\n }\n\n /**\n * Determines a class of a given word (pronoun) by finding a matching word entry(ies)\n * in a pronoun source info (`forms`) and getting a single or multiple classes of those entries.\n * Some morphological analyzers provide class information that is unreliable or do not\n * provide class information at all. However, class information is essential in\n * deciding in what table should pronouns be grouped. For this, we have to\n * determine pronoun classes using this method.\n *\n * @param {Form[]} forms - An array of known forms of pronouns.\n * @param {string} word - A word we need to find a matching class for.\n * @param hdwd\n * @param {boolean} normalize - Whether normalized forms of words shall be used for comparison.\n * @returns {Feature} Matching classes found within a Feature objects. If no matching classes found,\n * returns undefined.\n */\n static getPronounClasses (forms, word, hdwd, normalize = true) {\n // eslint-disable-next-line prefer-const\n let matchingValues = new Set() // Will eliminate duplicated values\n const matchingForms = forms.filter(\n form => {\n let match = false\n // the following test intential looks for an exact equality on the headword rather than\n // using compareWord because exact match on diacritics matters -- the interrogative and indefinite\n // pronouns only differ by diacritics\n if (form.value && (!form.features[Feature.types.hdwd] || (form.features[Feature.types.hdwd].value === hdwd))) {\n match = GreekLanguageModel.compareWords(form.value, word, normalize)\n }\n return match\n }\n )\n for (const matchingForm of matchingForms) {\n if (matchingForm.features.hasOwnProperty(Feature.types.grmClass)) {\n for (const value of matchingForm.features[Feature.types.grmClass].values) {\n matchingValues.add(value)\n }\n }\n }\n if (matchingValues.size > 0) {\n return new Feature(Feature.types.grmClass, Array.from(matchingValues), GreekLanguageModel.languageID)\n }\n }\n\n /**\n * Checks if two words are equivalent.\n *\n * @override\n * @param {string} wordA - a first word to be compared.\n * @param {string} wordB - a second word to be compared.\n * @param {boolean} normalize - whether or not to apply normalization algorithms\n * with an `alternateWordEncodings()` function.\n * @param {object} options - Additional comparison criteria.\n * @param {boolean} options.normalizeTrailingDigit - whether to consider the form\n * of a trailing digit during comparison.\n */\n static compareWords (wordA, wordB, normalize = true,\n { normalizeTrailingDigit = false } = {}) {\n let matched = false\n if (normalize) {\n if (normalizeTrailingDigit) {\n /*\n If a trailing digit is `1` (e.g. `αἴγυπτος1`) remove it, because the word with it is an equivalent of\n a word without (e.g. `αἴγυπτος`).\n */\n wordA = this.normalizeTrailingDigit(wordA)\n wordB = this.normalizeTrailingDigit(wordB)\n }\n\n const altWordA = GreekLanguageModel.alternateWordEncodings({\n word: wordA,\n encoding: 'strippedDiacritics',\n includeOriginal: true\n })\n const altWordB = GreekLanguageModel.alternateWordEncodings({\n word: wordB,\n encoding: 'strippedDiacritics',\n includeOriginal: true\n })\n for (let i = 0; i < altWordA.length; i++) {\n matched = altWordA[i] === altWordB[i]\n if (matched) {\n break\n }\n }\n if (!matched) {\n matched = GreekLanguageModel.normalizeText(wordA) === GreekLanguageModel.normalizeText(wordB)\n }\n } else {\n matched = wordA === wordB\n }\n return matched\n }\n\n static isValidUnicode (word) {\n return GreekChars.chars.some(char => word.includes(char))\n }\n}\n","import LMF from './language_model_factory.js'\nimport Feature from './feature.js'\nimport Logger from './logging/logger.js'\n\n/**\n * Wrapper class for a (grammatical, usually) feature, such as part of speech or declension. Keeps both value and type information.\n */\nclass GrmFeature {\n /**\n * @deprecated Use Feature instead\n * Initializes a Feature object\n * @param {string | string[]} value - A single feature value or, if this feature could have multiple\n * values, an array of values.\n * Multiple values do not allow to use a sort order. Because of this, it's better to use\n * array of multiple Feature objects with single value each instead of a single Feature object\n * with multiple values.\n * Multiple values are left for backward compatibility only. Please do not use them as they\n * will be removed in the future.\n * @param {string} type - A type of the feature, allowed values are specified in 'types' object.\n * @param {string | symbol} language - A language of a feature, allowed values are specified in 'languages' object.\n * @param {int} sortOrder - an integer used for sorting\n */\n constructor (value, type, language, sortOrder = 1) {\n if (!GrmFeature.types.isAllowed(type)) {\n throw new Error('Features of \"' + type + '\" type are not supported.')\n }\n if (!value) {\n throw new Error('Feature should have a non-empty value.')\n }\n if (!type) {\n throw new Error('Feature should have a non-empty type.')\n }\n if (!language) {\n throw new Error('Feature constructor requires a language')\n }\n this.value = value\n this.type = type\n this.languageID = undefined\n this.languageCode = undefined\n ;({ languageID: this.languageID, languageCode: this.languageCode } = LMF.getLanguageAttrs(language))\n this.sortOrder = sortOrder\n }\n\n /**\n * This is a compatibility function for legacy code.\n *\n * @returns {string} A language code.\n */\n get language () {\n Logger.getInstance().warn('Please use a \"languageID\" instead of a \"language\"')\n return this.languageCode\n }\n\n isEqual (feature) {\n if (Array.isArray(feature.value)) {\n // `feature` is a single object with multiple `value` properties. This feature will be sunset\n // as it does not allow to use sort order on Feature objects.\n if (!Array.isArray(this.value) || this.value.length !== feature.value.length) {\n return false\n }\n let equal = this.type === feature.type && LMF.compareLanguages(this.languageID, feature.languageID)\n equal = equal && this.value.every(function (element, index) {\n return element === feature.value[index]\n })\n return equal\n } else {\n return LMF.compareLanguages(this.languageID, feature.languageID) && this.type === feature.type && this.value === feature.value\n }\n }\n\n isSubsetof (features) {\n if (!Array.isArray(features)) {\n features = [features] // If `features` is a single value, convert it to an array (a more general case)\n }\n // `feature` is an array of feature objects with (possibly) each having a single feature value.\n const languageID = features[0].languageID // Assume all Feature objects have the same language ID\n const type = features[0].type // Assume all Feature objects have the same type\n const values = features.map(f => f.value)\n if (LMF.compareLanguages(this.languageID, languageID) && this.type === type && values.includes(this.value)) {\n return true\n }\n return false\n }\n\n /**\n * examine the feature for a specific value\n *\n * @param {string} value\n * @returns {boolean} true if the value is included in the feature's values\n */\n hasValue (value) {\n if (Array.isArray(this.value)) {\n return this.value.includes(value)\n } else {\n return this.value === value\n }\n }\n\n /**\n * string representation of a feature\n *\n * @returns {string}\n */\n toString () {\n if (Array.isArray(this.value)) {\n return this.value.join(',')\n } else {\n return this.value\n }\n }\n\n static toFeature (sourceFeature) {\n if (Array.isArray(sourceFeature)) {\n if (!(sourceFeature[0] instanceof Feature)) {\n const type = sourceFeature[0].type\n const languageID = sourceFeature[0].languageID\n const values = sourceFeature.map(v => v.value)\n return new Feature(type, values, languageID)\n }\n } else {\n if (!(sourceFeature instanceof Feature)) {\n return new Feature(sourceFeature.type, sourceFeature.value, sourceFeature.languageID)\n }\n }\n return sourceFeature\n }\n}\n// Should have no spaces in values in order to be used in HTML templates\nGrmFeature.types = {\n word: 'word',\n part: 'part of speech', // Part of speech\n number: 'number',\n case: 'case',\n grmCase: 'case', // A synonym of `case`\n declension: 'declension',\n gender: 'gender',\n type: 'type',\n class: 'class',\n grmClass: 'class', // A synonym of `class`\n conjugation: 'conjugation',\n comparison: 'comparison',\n tense: 'tense',\n voice: 'voice',\n mood: 'mood',\n person: 'person',\n frequency: 'frequency', // How frequent this word is\n meaning: 'meaning', // Meaning of a word\n source: 'source', // Source of word definition\n footnote: 'footnote', // A footnote for a word's ending\n dialect: 'dialect', // a dialect identifier\n note: 'note', // a general note\n pronunciation: 'pronunciation',\n age: 'age',\n area: 'area',\n geo: 'geo', // geographical data\n kind: 'kind', // verb kind information\n derivtype: 'derivtype',\n stemtype: 'stemtype',\n morph: 'morph', // general morphological information\n var: 'var', // variance?\n isAllowed (value) {\n const v = `${value}`\n return Object.values(this).includes(v)\n }\n}\nexport default GrmFeature\n","import Homonym from './homonym.js'\n\nexport default class HomonymGroup {\n constructor (homonyms = []) {\n this._homonyms = homonyms\n }\n\n get homonyms () {\n return this._homonyms\n }\n\n get hasHomonyms () {\n return this._homonyms.length > 0\n }\n\n /**\n * Converts a homonyms form a HomonymGroup into a single Homonym.\n * This function was created to provide backward compatibility with the code that\n * does not work with homonym groups.\n *\n * @param {string} targetWord - A target word that will be set for all lemmas within a resulting homonym.\n * @param {boolean} disambiguated - Whether lemmas in a resulting homonyms should be disambiguated.\n * @returns {Homonym} - A resulting homonym.\n */\n toHomonym (targetWord, { disambiguated = false } = {}) {\n if (!targetWord) {\n throw new Error(HomonymGroup.errors.NO_TARGET_WORD)\n }\n const lexemes = this._homonyms.map(homonym => homonym.lexemes).flat()\n if (disambiguated) {\n lexemes.forEach(lexeme => { lexeme.disambiguated = true })\n }\n return new Homonym(lexemes, targetWord)\n }\n}\n\nHomonymGroup.errors = {\n NO_TARGET_WORD: 'Target word is not provided'\n}\n","import LMF from './language_model_factory'\nimport Lexeme from './lexeme.js'\nimport Lemma from './lemma.js'\nimport Logger from './logging/logger.js'\n\nclass Homonym {\n /**\n * Initializes a Homonym object.\n *\n * @param {Lexeme[]} lexemes - An array of Lexeme objects.\n * @param {string} form - the form which produces the homonyms\n */\n constructor (lexemes, form) {\n if (!lexemes || (Array.isArray(lexemes) && lexemes.length === 0)) {\n throw new Error('Lexemes data should not be empty.')\n }\n\n if (!Array.isArray(lexemes)) {\n throw new Error('Lexeme data should be provided in an array.')\n }\n\n for (const lexeme of lexemes) {\n if (!(lexeme instanceof Lexeme)) {\n throw new Error('All lexeme data should be of Lexeme object type.')\n }\n }\n\n /** @type {Lexeme[]} */\n this.lexemes = lexemes\n this.targetWord = form\n }\n\n /**\n * Creates a simple form of inflection with one lexeme and zero or more inflections\n * attached to it. The lexeme will have lemma whose `word` will be set to\n * a homonym's target word.\n *\n * @param {string} word - A word that will populate homonym's `targetWord` prop and lemma `word` one.\n * @param {symbol} languageID - A language identificator as defined in Constants.LANG_XXX.\n * @param {Inflection[]} inflections - Zero or more inflection objects that will be attached to the lexeme\n * @returns {Homonym} A newly created homonym object.\n */\n static createSimpleForm (word, languageID, inflections = []) {\n const lemma = new Lemma(word, languageID)\n const lexeme = new Lexeme(lemma, inflections)\n return new Homonym([lexeme], word)\n }\n\n /**\n * Checks if any of the lexemes of this homonym has short definitions stored.\n *\n * @returns {boolean} - true if any definitions are stored, false otherwise.\n */\n get hasShortDefs () {\n return Boolean(this.lexemes && this.lexemes.some(l => l.hasShortDefs))\n }\n\n /**\n * Checks if any of the lexemes of this homonym has full definitions stored.\n *\n * @returns {boolean} - true if any definitions are stored, false otherwise.\n */\n get hasFullDefs () {\n return Boolean(this.lexemes && this.lexemes.some(l => l.hasFullDefs))\n }\n\n static readObject (jsonObject) {\n let lexemes = [] // eslint-disable-line prefer-const\n if (jsonObject.lexemes) {\n for (const lexeme of jsonObject.lexemes) {\n lexemes.push(Lexeme.readObject(lexeme))\n }\n } else {\n const languageID = LMF.getLanguageIdFromCode(jsonObject.languageCode)\n lexemes = [new Lexeme(new Lemma(jsonObject.targetWord, languageID), [])]\n }\n const homonym = new Homonym(lexemes, jsonObject.form || jsonObject.targetWord)\n homonym.lemmasList = jsonObject.lemmasList\n return homonym\n }\n\n convertToJSONObject (addMeaning = false) {\n let resultHomonym = { lexemes: [], form: this.targetWord } // eslint-disable-line prefer-const\n for (const lexeme of this.lexemes) {\n resultHomonym.lexemes.push(lexeme.convertToJSONObject(addMeaning))\n }\n return resultHomonym\n }\n\n /**\n * Returns a language code of a homonym (ISO 639-3).\n * Homonym does not have a language property, only lemmas and inflections do. We assume that all lemmas\n * and inflections within the same homonym will have the same language, and we can determine a language\n * by using language property of the first lemma. We chan change this logic in the future if we'll need to.\n *\n * @returns {string} A language code, as defined in the `languages` object.\n */\n get language () {\n Logger.getInstance().warn('Please use languageID instead')\n return LMF.getLanguageCodeFromId(this.languageID)\n }\n\n /**\n * Returns a language ID of a homonym.\n * Homonym does not have a languageID property, only lemmas and inflections do. We assume that all lemmas\n * and inflections within the same homonym will have the same language, and we can determine a language\n * by using languageID property of the first lemma. We chan change this logic in the future if we'll need to.\n *\n * @returns {symbol} A language ID, as defined in the `LANG_` constants.\n */\n get languageID () {\n if (this.lexemes && this.lexemes[0] && this.lexemes[0].lemma && this.lexemes[0].lemma.languageID) {\n return this.lexemes[0].lemma.languageID\n } else {\n throw new Error('Homonym has not been initialized properly. Unable to obtain language ID information.')\n }\n }\n\n /**\n * Returns a list of all inflections within all lexemes of a homonym\n *\n * @returns {Inflection[]} An array of inflections\n */\n get inflections () {\n let inflections = []\n for (const lexeme of this.lexemes) {\n inflections = inflections.concat(lexeme.inflections)\n }\n return inflections\n }\n\n isDisambiguated () {\n return this.lexemes.filter(l => l.disambiguated).length > 0\n }\n\n /**\n * Disambiguate homymyn objects with another\n *\n * @param {Homonym} base the homonym to use to disambiguate\n * @param {Homonym[]} disambiguators the homonyms to use to disambiguate\n */\n static disambiguate (base, disambiguators) {\n if (disambiguators.length === 0) {\n // nothing left to disamibugate with\n return base\n }\n const disambiguator = disambiguators.shift()\n let matchedLexemes = [] // eslint-disable-line prefer-const\n let missedLexemes = [] // eslint-disable-line prefer-const\n let possibleLexemes = [] // eslint-disable-line prefer-const\n let unmatchedLexemes = [] // eslint-disable-line prefer-const\n // iterate through the lexemes in the disambiguator and try\n // to disambiguate the existing lexemes with each\n for (const otherLexeme of disambiguator.lexemes) {\n for (const lexeme of base.lexemes) {\n // Do not try to disambiguate lexemes that can't: it will erase a `disambiguated` flag\n const newLex = lexeme.canBeDisambiguatedWith(otherLexeme) ? Lexeme.disambiguateInflections(lexeme, otherLexeme) : lexeme\n\n if (lexeme.isFullHomonym(otherLexeme, { normalize: true })) {\n if (newLex.getSelectedInflection() !== null) {\n // If lexeme is a full homonym with a disambiguator and had a matching\n // inflection, it is a full match\n newLex.setDisambiguation(otherLexeme)\n matchedLexemes.push(newLex)\n } else {\n // If lexeme is a full homonym with a disambiguator but didn't have a\n // matching inflection, it may or may not be a full match depending\n // upon whether any other lexeme was a more complete match\n possibleLexemes.push(newLex)\n }\n } else {\n unmatchedLexemes.push(newLex)\n }\n }\n if (matchedLexemes.length === 0) {\n if (possibleLexemes.length > 0) {\n // we didn't have a better match so mark as disamibugated\n // and add in the disambiguator's inflections\n for (const lexeme of possibleLexemes) {\n lexeme.setDisambiguation(otherLexeme)\n // we have to add in the disamibugators inflections\n for (const infl of disambiguator.inflections) {\n lexeme.addInflection(infl)\n lexeme.setSelectedInflection(infl)\n }\n }\n } else {\n // if we couldn't find a matching lexeme, add the disambigutor's lexemes\n // to the list of lexemes for the new Homonym\n otherLexeme.setDisambiguation()\n for (const infl of otherLexeme.inflections) {\n otherLexeme.setSelectedInflection(infl)\n }\n missedLexemes.push(otherLexeme)\n }\n }\n }\n // create a new homonym with the disamibugated lexemes\n const newHom = new Homonym([...missedLexemes, ...matchedLexemes, ...possibleLexemes, ...unmatchedLexemes], base.targetWord)\n return Homonym.disambiguate(newHom, disambiguators)\n }\n}\nexport default Homonym\n","import Feature from './feature.js'\nimport LMF from './language_model_factory.js'\nimport * as Constants from './constants.js'\nimport Logger from './logging/logger.js'\n/*\n Hierarchical structure of return value of a morphological analyzer:\n\n Homonym (a group of words that are written the same way, https://en.wikipedia.org/wiki/Homonym)\n Lexeme 1 (a unit of lexical meaning, https://en.wikipedia.org/wiki/Lexeme)\n Have a lemma and one or more inflections\n Lemma (also called a headword, a canonical form of a group of words https://en.wikipedia.org/wiki/Lemma_(morphology) )\n Inflection 1\n Stem\n Suffix (also called ending)\n Inflection 2\n Stem\n Suffix\n Lexeme 2\n Lemma\n Inflection 1\n Stem\n Suffix\n */\n\n/**\n * Represents an inflection of a word\n */\nclass Inflection {\n /**\n * Initializes an Inflection object.\n *\n * @param {string} stem - A stem of a word.\n * @param {string | symbol} language - A word's language.\n * @param {string} suffix - a suffix of a word\n * @param {prefix} prefix - a prefix of a word\n * @param {example} example - example\n */\n constructor (stem = null, language, suffix = null, prefix = null, example = null) {\n if (!stem && !suffix) {\n throw new Error('At least stem or suffix must be defined')\n }\n if (!language) {\n throw new Error('Language should not be empty.')\n }\n\n if (!LMF.supportsLanguage(language)) {\n throw new Error(`language ${language} not supported.`)\n }\n\n this.stem = stem\n this.languageID = undefined\n this.languageCode = undefined\n ;({ languageID: this.languageID, languageCode: this.languageCode } = LMF.getLanguageAttrs(language))\n this.model = LMF.getLanguageModel(this.languageID)\n this.features = new Set() // Stores names of features of this inflection, feature objects themselves are stored as props\n\n // TODO: Separate constraints to a class of its own to share definition with language model and provide `clone()` method?\n // A grammar constraints object\n this.constraints = {\n fullFormBased: false, // True this inflection stores and requires to use a full form of a word\n suffixBased: false, // True if only suffix is enough to identify this inflection\n irregular: false, // Whether this word is an irregular one\n obligatoryMatches: [], // {string[]} Names of features that should be matched in order to include a form or suffix to an inflection table\n optionalMatches: [], // {string[]} Names of features that will be recorded but are not important for inclusion of a form or suffix to an inflection table\n morphologyMatches: [] // {string[]} These features should match for a morphology match\n }\n\n // Suffix may not be present in every word. If missing, it will be set to null.\n this.suffix = suffix\n\n // Prefix may not be present in every word. If missing, it will be set to null.\n this.prefix = prefix\n\n // Example may not be provided\n this.example = example\n\n // A lemma this inflection belongs to. Is set by `Lexeme.addInflection()`\n // TODO: make sure inflections are not set directly or this data will not be set\n this.lemma = null\n }\n\n clone () {\n // eslint-disable-next-line prefer-const\n let clone = new Inflection(this.stem, this.languageID, this.suffix, this.prefix, this.example)\n // Features are not modified right now so we can share them\n clone.addFeatures(Array.from(this.features).map(f => this[f]))\n clone.constraints = {\n fullFormBased: this.constraints.fullFormBased,\n suffixBased: this.constraints.suffixBased,\n irregular: this.constraints.irregular,\n obligatoryMatches: this.constraints.obligatoryMatches ? Array.from(this.constraints.obligatoryMatches) : [],\n optionalMatches: this.constraints.obligatoryMatches ? Array.from(this.constraints.obligatoryMatches) : [],\n morphologyMatches: this.constraints.morphologyMatches ? Array.from(this.constraints.morphologyMatches) : []\n }\n // A clone will share the same lexeme with an original item\n clone.lemma = this.lemma\n return clone\n }\n\n /**\n * Returns a full form of a word using ' - ' as a divider for suffix-based inflections.\n *\n * @returns {string} A word form.\n */\n get form () {\n const divider = this.stem ? ' - ' : ''\n return this.getForm(divider)\n }\n\n /**\n * Returns a full form of a word using user specified divider for suffix-based inflections.\n *\n * @param {string} divider - A divider to use between stem and suffix.\n * @returns {string} A word form.\n */\n getForm (divider = '') {\n let form, prefix, suffix\n\n const stem = this.stem ? this.stem : ''\n\n if (this.model.direction === Constants.LANG_DIR_RTL) {\n prefix = this.prefix ? divider + this.prefix : ''\n suffix = this.suffix ? this.suffix + divider : ''\n\n form = suffix + stem + prefix\n } else {\n prefix = this.prefix ? this.prefix + divider : ''\n suffix = this.suffix ? divider + this.suffix : ''\n\n form = prefix + stem + suffix\n }\n\n return form\n }\n\n /**\n * This is a compatibility function for legacy code.\n *\n * @returns {string} A language code.\n */\n get language () {\n Logger.getInstance().warn('Please use a \"languageID\" instead of a \"language\"')\n return this.languageCode\n }\n\n /**\n * Sets grammar properties based on inflection info\n */\n setConstraints () {\n if (this.model.hasOwnProperty('getInflectionConstraints')) {\n const constraintData = this.model.getInflectionConstraints(this)\n this.constraints = Object.assign(this.constraints, constraintData)\n }\n }\n\n /**\n * Compares if two words are the same. Options allows to specify\n * comparison algorithms for cases when word info is not fully correct.\n *\n * @param {string} word - A word or suffix to compare with inflection.\n * @param {string} className - A type of word: 'Suffix' or \"Form'.\n * @param {comparison} options - These settings define comparison algorithm:\n * 'normalize' - normalize word and inflection before comparison.\n * 'fuzzySuffix' - if suffix contained in a 'word' does not match our suffix data,\n * try to find a match by checking if inflection full form\n * ends with this suffix.\n * @returns {boolean} True for match, false otherwise.\n */\n smartWordCompare (word, className, options = {}) {\n // Default values\n if (!options.hasOwnProperty('normalize')) { options.normalize = true }\n if (!options.hasOwnProperty('fuzzySuffix')) { options.fuzzySuffix = false }\n\n let value\n if (!this.constraints.irregular) {\n value = this.constraints.suffixBased ? this.suffix : this.form\n } else {\n if (className === 'Suffix') {\n value = this.suffix\n } else {\n value = this[Feature.types.fullForm] ? this[Feature.types.fullForm].value : this.form\n }\n }\n\n let matchResult = this.modelCompareWords(word, value, options.normalize)\n\n if (!matchResult && className === 'Suffix' && options.fuzzySuffix) {\n const form = this.getForm()\n if (form && word && form.length >= word.length) {\n const altSuffix = form.substring(form.length - word.length)\n matchResult = this.modelCompareWords(word, altSuffix, options.normalize)\n }\n }\n\n return matchResult\n }\n\n compareWithWord (word, normalize = true) {\n const value = this.constraints.suffixBased ? this.suffix : this.form\n return this.modelCompareWords(word, value, normalize)\n }\n\n /**\n * Compare to words (or partial words) delegating to the language model\n * rules for normalization\n *\n * @param {string} wordA the first word\n * @param {string} wordB the second word\n * @param {boolean} normalize whether or not to apply normalization\n */\n modelCompareWords (wordA, wordB, normalize = true) {\n const model = LMF.getLanguageModel(this.languageID)\n return model.compareWords(wordA, wordB, normalize)\n }\n\n /**\n * Compare single feature values delegating to the language model\n * rules for normalization\n *\n * @param {string} featureType the feature type\n * @param {string} valueA the first value\n * @param {string} valueB the secon value\n * @param {boolean} normalize whether or not to apply normalization\n */\n modelCompareFeatureValue (featureType, valueA, valueB, normalize = true) {\n const model = LMF.getLanguageModel(this.languageID)\n return model.compareFeatureValue(featureType, valueA, valueB, { normalize })\n }\n\n /**\n * Check to see if the supplied inflection can disambiguate this one\n *\n * @param {Inflection} infl Inflection object to be used for disambiguation\n * @param {object} options disambiguation options\n * @param {boolean} options.ignorePofs flag to ignore the inflection's part of speech\n * (use if lexeme pofs is more relevant)\n * @returns {object} object { {Boolean} match, {Boolean} exactMatch }\n * a match means the inflection was disamibugated\n * an exactMatch means the disamibugator matched all\n * values of all features\n */\n disambiguatedBy (infl, { ignorePofs = false } = {}) {\n let matched = true\n let exactMatch = true\n // an inflection can only be disambiguated by its features\n if (this.features.size === 0 || infl.features.size === 0) {\n matched = false\n }\n // the supplied inflection can be less specific but not more\n if (infl.features.size > this.features.size) {\n matched = false\n }\n for (const feature of infl.features) {\n if (ignorePofs && feature === Feature.types.part) {\n continue\n }\n for (const value of infl[feature].values) {\n if (!this.hasFeatureValue(feature, value, { normalize: true })) {\n matched = false\n break\n }\n // it's an exact match if all of the values of a multi-valued\n // feature match (e.g. an inflection with a single masculine gender feature\n // disambiguates an inflection with a masculine and feminine gender feature\n // but it is not an exact match of the inflection\n if (this[feature].values.length !== infl[feature].values.length) {\n exactMatch = false\n }\n }\n }\n return { match: matched, exactMatch: exactMatch }\n }\n\n /**\n * @deprecated Use `addFeature` instead\n * Sets a grammatical feature in an inflection. Some features can have multiple values, In this case\n * an array of Feature objects will be provided.\n * Values are taken from features and stored in a 'feature.type' property as an array of values.\n * @param {Feature | Feature[]} data\n */\n set feature (data) {\n Logger.getInstance().warn('Please use \"addFeature\" instead.')\n if (!data) {\n throw new Error('Inflection feature data cannot be empty.')\n }\n if (!Array.isArray(data)) {\n data = [data]\n }\n\n const type = data[0].type\n this[type] = []\n for (const element of data) {\n if (!(element instanceof Feature)) {\n throw new Error('Inflection feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(element.languageID, this.languageID)) {\n throw new Error(`Language \"${element.languageID.toString()}\" of a feature does not match\n a language \"${this.languageID.toString()}\" of an Inflection object.`)\n }\n\n this[type].push(element)\n this.features.add(type)\n }\n }\n\n /**\n * Sets a grammatical feature of an inflection. Feature is stored in a `feature.type` property.\n *\n * @param {Feature} feature - A feature object with one or multiple values.\n */\n addFeature (feature) {\n if (!feature) {\n throw new Error('feature data cannot be empty.')\n }\n\n if (!(feature instanceof Feature)) {\n throw new Error('feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(feature.languageID, this.languageID)) {\n throw new Error('Language \"' + feature.languageID.toString() + '\" of a feature does not match a language \"' +\n this.languageID.toString() + '\" of a Lemma object.')\n }\n\n this[feature.type] = feature\n this.features.add(feature.type)\n }\n\n /**\n * Sets multiple grammatical features of an inflection.\n *\n * @param {Feature[]} features - Features to be added.\n */\n addFeatures (features) {\n if (!Array.isArray(features)) {\n throw new Error('Features must be in an array')\n }\n\n for (const feature of features) {\n this.addFeature(feature)\n }\n }\n\n /**\n * Checks whether an inflection has a feature with `featureName` name and `featureValue` value\n *\n * @param {string} featureName - A name of a feature\n * @param {string} featureValue - A value of a feature\n * @param {object} options\n * @param {boolean} options.normalize - whether or not to normalize the feature values\n * @returns {boolean} True if an inflection contains a feature, false otherwise\n */\n hasFeatureValue (featureName, featureValue, { normalize = false } = {}) {\n if (this.hasOwnProperty(featureName)) {\n return this[featureName].values.some(v => this.modelCompareFeatureValue(featureName, v, featureValue))\n }\n return false\n }\n\n toString () {\n let string = `Inflection stem: ${this.stem}, prefix: ${this.prefix}, suffix: ${this.suffix}, langID: ${this.languageID.toString()}\\n features: `\n for (const feature of this.features.values()) {\n string += `${feature}: ${this[feature].value}, `\n }\n string += '\\n constraints: '\n for (const [key, value] of Object.entries(this.constraints)) {\n if (Array.isArray(value)) {\n string += `${key}: [${value}], `\n } else {\n string += `${key}: ${value}, `\n }\n }\n string += `\\n example: ${this.example}`\n return string\n }\n\n static readObject (jsonObject, lemma) {\n // eslint-disable-next-line prefer-const\n let inflection =\n new Inflection(\n jsonObject.stem, jsonObject.languageCode, jsonObject.suffix, jsonObject.prefix, jsonObject.example)\n inflection.languageID = LMF.getLanguageIdFromCode(inflection.languageCode)\n\n if (jsonObject.features && jsonObject.features.length > 0) {\n jsonObject.features.forEach(featureSource => {\n inflection.addFeature(Feature.readObject(featureSource))\n })\n }\n if (lemma) {\n inflection.lemma = lemma\n }\n return inflection\n }\n\n convertToJSONObject () {\n let resultFeatures = [] // eslint-disable-line prefer-const\n for (const key of this.features.keys()) {\n resultFeatures.push(this[key].convertToJSONObject())\n }\n const languageCode = LMF.getLanguageCodeFromId(this.languageID)\n return {\n stem: this.stem,\n languageCode: languageCode,\n suffix: this.suffix,\n prefix: this.prefix,\n example: this.example,\n features: resultFeatures\n }\n }\n}\nexport default Inflection\n","class InflectionGroup {\n /**\n * A group of inflections or groups of inflections\n *\n * @param {InflectionGroupingKey} groupingKey features of the inflections in the group\n * @param {Inflection[]|InflectionGroup[]} inflections array of Inflections or InflectionGroups in this group\n * @param sortKey\n */\n constructor (groupingKey, inflections = [], sortKey = null) {\n this.groupingKey = groupingKey\n this.inflections = inflections\n }\n\n /**\n * Add an Inflection or InflectionGroup to the group\n *\n * @param {Inflection|InflectionGroup} inflection\n */\n append (inflection) {\n this.inflections.push(inflection)\n }\n}\nexport default InflectionGroup\n","import Feature from './feature.js'\n\nclass InflectionGroupingKey {\n /**\n * @class\n * @param {Inflection} infl inflection with features which are used as a grouping key\n * @param {string[]} features array of feature names which are used as the key\n * @param {object} extras extra property name and value pairs used in the key\n */\n constructor (infl, features, extras = {}) {\n for (const feature of features) {\n this[feature] = infl[feature]\n }\n Object.assign(this, extras)\n }\n\n /**\n * checks if a feature with a specific value\nis included in the grouping key\n *\n * @returns {boolean} true if found, false if not\n * @param feature\n * @param value\n */\n hasFeatureValue (feature, value) {\n if (this.hasOwnProperty(feature)) {\n return this[feature].values.includes(value)\n }\n return false\n }\n\n /**\n * Return this key as a string\n *\n * @returns {string} string representation of the key\n */\n toString () {\n let values = [] // eslint-disable-line prefer-const\n for (const prop of Object.getOwnPropertyNames(this).sort()) {\n // A prop can be either a Feature object, or a one of the extras of a string type\n const value = (this[prop] instanceof Feature) ? this[prop].values.sort().join(',') : this[prop]\n values.push(value)\n }\n return values.join(' ')\n }\n}\n\nexport default InflectionGroupingKey\n","import * as Constants from './constants.js'\nimport LanguageModelFactory from './language_model_factory.js'\nimport Feature from './feature.js'\nimport FeatureType from './feature_type.js'\nimport InflectionGroupingKey from './inflection_grouping_key.js'\nimport InflectionGroup from './inflection_group.js'\nimport Logger from './logging/logger.js'\n\n/**\n * @class LanguageModel is the base class for language-specific behavior\n */\nclass LanguageModel {\n constructor () {\n // This is just to avoid JavaScript Standard error on `context_backward` getter name. Don't need a constructor otherwise\n // TODO: `contextBackward` shall be used instead of `context_backward` wherever it is used\n this.context_backward = LanguageModel.contextBackward\n }\n\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n /**\n * @deprecated\n */\n get contextForward () {\n Logger.getInstance().warn('Please use static \"contextForward\" instead')\n return this.constructor.contextForward\n }\n\n /**\n * @deprecated\n */\n get contextBackward () {\n Logger.getInstance().warn('Please use static \"contextBackward\" instead')\n return this.constructor.contextBackward\n }\n\n /**\n * @deprecated\n */\n get direction () {\n Logger.getInstance().warn('Please use static \"direction\" instead')\n return this.constructor.direction\n }\n\n /**\n * @deprecated\n */\n get baseUnit () {\n Logger.getInstance().warn('Please use static \"baseUnit\" instead')\n return this.constructor.baseUnit\n }\n\n /**\n * @deprecated\n */\n get features () {\n Logger.getInstance().warn('Please use individual \"getFeatureType\" or static \"features\" instead')\n return this.constructor.features\n }\n\n /**\n * Returns a list of names of feature types that are defined in a language model.\n *\n * @returns {string[]} Names of features that are defined in a model.\n */\n static get featureNames () {\n return this.featureValues.keys()\n }\n\n /**\n * Returns a feature a `featureType` name that is defined for a language. It does not create a new Feature\n * object instance. It returns the one defined in a language model. To get a new instance of a Feature\n * object, use `getFeature` instead.\n * If no feature of `featureType` is defined in a language model, throws an error.\n *\n * @param {string} featureType - A feature type name.\n * @returns {Feature} A feature object of requested type.\n */\n static typeFeature (featureType) {\n if (this.typeFeatures.has(featureType)) {\n return this.typeFeatures.get(featureType)\n } else {\n throw new Error(`Type feature \"${featureType}\" is not defined within \"${this}\"`)\n }\n }\n\n /**\n * Returns a map with Feature objects of all features defined in a language. Use this method to get all\n * Feature objects defined in a language model.\n *\n * @returns {Map} Feature objects for all features defined within a language in a Map object. The key is\n * a feature type (a string), and the value is a Feature object.\n */\n static get typeFeatures () {\n Logger.getInstance().warn('This getter must be defined in a descendant class')\n }\n\n static get features () {\n let features = {} // eslint-disable-line prefer-const\n for (const featureName of this.featureNames) {\n features[featureName] = this.getFeature(featureName)\n }\n return features\n }\n\n static get languageID () {\n return Constants.LANG_UNDEFINED\n }\n\n static get languageCode () {\n return Constants.STR_LANG_CODE_UNDEFINED\n }\n\n /**\n * Returns an array of language codes that represents the language.\n *\n * @returns {string[]} An array of language codes that matches the language.\n */\n static get languageCodes () {\n return []\n }\n\n static get codes () {\n Logger.getInstance().warn('Use static \"languageCodes\" instead')\n return this.languageCodes\n }\n\n /**\n * @deprecated\n * @returns {string[]}\n */\n get codes () {\n Logger.getInstance().warn('Please use a static version of \"codes\" instead')\n return this.constructor.languageCodes\n }\n\n /**\n * @deprecated\n * @returns {string}\n */\n toCode () {\n Logger.getInstance().warn('Please use a static \"languageCode\" instead')\n return this.constructor.languageCode\n }\n\n /**\n * @deprecated\n * @returns {string}\n */\n static toCode () {\n Logger.getInstance().warn('Please use a static \"languageCode\" instead')\n return this.languageCode\n }\n\n /**\n * Return a list of feature values that are allowed for each feature type\n *\n * @returns {Map}\n */\n static get featureValues () {\n /*\n This could be a static variable, but then it will create a circular reference:\n Feature -> LanguageModelFactory -> LanguageModel -> Feature\n */\n return new Map([\n [\n Feature.types.part,\n [\n Constants.POFS_ADVERB,\n Constants.POFS_ADVERBIAL,\n Constants.POFS_ADJECTIVE,\n Constants.POFS_ARTICLE,\n Constants.POFS_CONJUNCTION,\n Constants.POFS_EXCLAMATION,\n Constants.POFS_INTERJECTION,\n Constants.POFS_NOUN,\n Constants.POFS_NUMERAL,\n Constants.POFS_PARTICLE,\n Constants.POFS_PREFIX,\n Constants.POFS_PREPOSITION,\n Constants.POFS_PRONOUN,\n Constants.POFS_SUFFIX,\n Constants.POFS_SUPINE,\n Constants.POFS_VERB,\n Constants.POFS_VERB_PARTICIPLE\n ]\n ],\n [\n Feature.types.gender,\n [\n Constants.GEND_MASCULINE,\n Constants.GEND_FEMININE,\n Constants.GEND_NEUTER\n ]\n ],\n [\n Feature.types.type,\n [\n Constants.TYPE_REGULAR,\n Constants.TYPE_IRREGULAR\n ]\n ],\n [\n Feature.types.person,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD\n ]\n ],\n [\n Feature.types.number,\n [\n Constants.NUM_SINGULAR,\n Constants.NUM_PLURAL\n ]\n ],\n [\n Feature.types.age,\n []\n ],\n [\n Feature.types.area,\n []\n ],\n [\n Feature.types.source,\n []\n ],\n [\n Feature.types.frequency,\n []\n ],\n [\n Feature.types.geo,\n []\n ],\n [\n Feature.types.pronunciation,\n []\n ],\n [\n Feature.types.kind,\n []\n ],\n [\n Feature.types.comparison,\n []\n ],\n [\n Feature.types.morph,\n []\n ],\n [\n Feature.types.stemtype,\n []\n ],\n [\n Feature.types.derivtype,\n []\n ]\n ])\n }\n\n /**\n * @deprecated\n * @returns {symbol} Returns a language ID\n */\n static get sourceLanguage () {\n Logger.getInstance().warn('Please use languageID directly')\n return this.languageID\n }\n\n /**\n * @deprecated\n * @returns {symbol} Returns a language ID\n */\n get sourceLanguage () {\n Logger.getInstance().warn('Please use languageID directly')\n return this.constructor.languageID\n }\n\n /**\n * @deprecated\n * @param name\n * @returns {FeatureType}\n */\n static getFeatureType (name) {\n Logger.getInstance().warn('Please use getFeature instead')\n const featureValues = this.featureValues\n if (featureValues.has(name)) {\n return new FeatureType(name, featureValues.get(name), this.languageID)\n } else {\n throw new Error(`Feature \"${name}\" is not defined`)\n }\n }\n\n /**\n * Returns a new instance of a feature with `featureType`. It uses a feature defined in a language model\n * as a master.\n *\n * @param {string} featureType - A name of a feature type.\n * @returns {Feature} - A newly created Feature object.\n */\n static getFeature (featureType) {\n const featureValues = this.featureValues // To cache the values\n if (featureValues.has(featureType)) {\n const allowedValues = featureValues.get(featureType)\n return new Feature(featureType, allowedValues, this.languageID, 1, allowedValues)\n } else {\n throw new Error(`Feature \"${featureType}\" is not defined`)\n }\n }\n\n _initializeFeatures () {\n const features = {}\n for (const featureName of this.constructor.featureValues.keys()) {\n features[featureName] = this.constructor.getFeature(featureName)\n }\n return features\n }\n\n /**\n * @deprecated\n */\n grammarFeatures () {\n Logger.getInstance().warn('Please use a static version of \"grammarFeatures\" instead')\n return this.constructor.grammarFeatures()\n }\n\n /**\n * Identify the morphological features which should be linked to a grammar.\n *\n * @returns {string[]} Array of Feature types\n */\n static grammarFeatures () {\n return []\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display for the current node\n *\n * @param node\n * @returns {boolean}\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * Check to see if the supplied language code is supported by this tool\n *\n * @param {string} code - The language code\n * @returns {boolean} - True if supported, false if not\n */\n static supportsLanguage (code) {\n return this.languageCodes.includes[code]\n }\n\n /**\n * Checks if the word provided has a trailing digit (e.g. αἴγυπτος1 in Greek).\n *\n * @param {string} word - A word to be checked.\n * @returns {boolean} - True if the word has a trailing digit, false otherwise.\n */\n static hasTrailingDigit (word) {\n return /^.+\\d$/.test(word)\n }\n\n /**\n * Morphological parsers and dictionary indexes may add a trailing digit to disambiguate homonyms.\n * These can be ignored for purposes of string comparison.\n *\n * @param {string} word - A word to normalize.\n * @returns {string} A normalized word.\n */\n static normalizeTrailingDigit (word) {\n return /^.+\\d$/.test(word) ? word.substring(0, word.length - 1) : word\n }\n\n /**\n * Checks if the word provided is in a normalized form.\n * It also checks if the word has the right single quotation (elision).\n *\n * @see {@link GreekLanguageModel#normalizeText}\n * @param {string} text - A word or a text string to be checked.\n * @returns {boolean} - True if at least one character of the word\n * is NOT in an Unicode Normalization Form, false otherwise.\n */\n static needsNormalization (text) {\n return Boolean(text.localeCompare(this.normalizeText(text)))\n }\n\n /**\n * Checks if the word provided has any letters in an upper case.\n *\n * @param {string} word - A word to be checked.\n * @returns {boolean} - True if the word at least one letter in upper case, false if all letters are lower case.\n */\n static hasUpperCase (word) {\n return Boolean(word.localeCompare(word.toLocaleLowerCase()))\n }\n\n /**\n * Return a normalized version of a text string which can be used to compare the word for equality\n *\n * @param {string} word the source word\n * @returns {string} Normalized form of the word (default version just returns the same word,\n * override in language-specific subclass)\n */\n static normalizeText (word) {\n return word\n }\n\n /**\n * Return a normalized part of speech for a lexeme based upon the lemma and inflection data\n *\n * @param {Lexeme} lexeme the lexeme to normalize\n * @returns {string} the alpheios-normalized part of speech value\n **/\n static normalizePartOfSpeechValue (lexeme) {\n // default is to return the value as it exists on the lemma\n return lexeme.lemma.features[Feature.types.part] ? lexeme.lemma.features[Feature.types.part].value : null\n }\n\n /**\n * Return a normalized feature value, based upon the feature type and supplied value\n *\n * @param {string} featureType the feature type\n * @param {string} featureValue the feature value\n * @returns {string} the alpheios-normalized feature value\n */\n static normalizeFeatureValue (featureType, featureValue) {\n // default is to return the value as supplied\n return featureValue\n }\n\n /**\n * Returns alternate encodings for a word\n *\n * @param {object} params - A parameters object.\n * @param {string} params.word - The word.\n * @param {string} [params.preceding=null] - A preceding word (optional).\n * @param {string} [params.following=null] - A following word (optional).\n * @param {string} [params.encoding=null] - Encoding name to filter the response to (optional).\n * @param {boolean} [params.preserveCase=false] - If true will preserve the case (default is false).\n * @param {boolean} [params.includeOriginal=false] - If true will include the original word even if it is unchanged (default is false).\n * @returns {Array} an array of alternate encodings if they differ from the original\n */\n static alternateWordEncodings ({\n word = null, preceding = null, following = null, encoding = null,\n preserveCase = false, includeOriginal = false\n } = {}) {\n return includeOriginal ? [word] : []\n }\n\n /**\n * Compare two words with language specific logic\n *\n * @param {string} wordA - a first word for comparison.\n * @param {string} wordB - a second word for comparison.\n * @param {boolean} normalize - whether or not to apply normalization algorithms\n * @param {object} options - Additional comparison criteria.\n */\n static compareWords (wordA, wordB, normalize = true, options = {}) {\n if (normalize) {\n wordA = this.normalizeTrailingDigit(wordA)\n wordB = this.normalizeTrailingDigit(wordB)\n return this.normalizeText(wordA) === this.normalizeText(wordB)\n } else {\n return wordA === wordB\n }\n }\n\n /**\n * Compare two feature values with language specific logic\n *\n * @param {string} featureType - the feature type being compared\n * @param {string} valueA - the first value for comparison\n * @param {string} valueB - the second value for comparison\n * @param {object} options\n * @param {boolean} options.normalize - whether or not to apply normalization\n */\n static compareFeatureValue (featureType, valueA, valueB, { normalize = true } = {}) {\n if (normalize) {\n valueA = this.normalizeFeatureValue(featureType, valueA)\n valueB = this.normalizeFeatureValue(featureType, valueB)\n }\n return valueA === valueB\n }\n\n /**\n * Get a list of valid punctuation for this language\n *\n * @returns {string} a string containing valid punctuation symbols\n */\n static getPunctuation () {\n return '\\\\-\\\\.,;:!?\\'\"(){}\\\\[\\\\]<>\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u2020\\u2021\\u201C\\u201D\\u0387\\u00B7\\n\\r'\n }\n\n /**\n * @deprecated\n * @returns {string}\n */\n getPunctuation () {\n Logger.getInstance().warn('Please use a static version of \"getPunctuation\"')\n return this.constructor.getPunctuation()\n }\n\n toString () {\n return String(this.constructor.languageCode)\n }\n\n isEqual (model) {\n return LanguageModelFactory.compareLanguages(this.languageID, model.languageID)\n }\n\n /*\n There are two types of language identificators: language IDs and language code. Language ID is a symbol constant\n defined in constants.js, such as LANG_LATIN or LANG_GREEK. Language code is a string containing (usually)\n a three-letter language codes such as 'lat' or 'la' for latin. There can be multiple language codes that identify\n the same language, but there is only one unique language ID for each language.\n */\n\n /**\n * Checks whether a language has a particular language code in its list of codes\n *\n * @param {string} languageCode - A language code to check\n * @returns {boolean} Whether this language code exists in a language code list\n */\n static hasCode (languageCode) {\n if (this.isLanguageCode(languageCode)) {\n return this.languageCodes.includes(languageCode)\n } else {\n throw new Error(`Format of a \"${languageCode}\" is incorrect`)\n }\n }\n\n /**\n * Tests wither a provided language identificator is a language ID.\n *\n * @param {symbol|string} language - A language identificator, either a Symbol or a string language code.\n * @returns {boolean} True if language identificator provided is a language ID.\n */\n static isLanguageID (language) {\n return (typeof language === 'symbol')\n }\n\n /**\n * Tests wither a provided language identificator is a language code.\n *\n * @param {symbol|string} language - A language identificator, either a Symbol or a string language code.\n * @returns {boolean} - True if language identificator provided is a language code.\n */\n static isLanguageCode (language) {\n return !LanguageModel.isLanguageID(language)\n }\n\n /**\n * @deprecated\n * @param node\n */\n canInflect (node) {\n Logger.getInstance().warn('Please use a static version of \"canInflect\" instead')\n return this.constructor.canInflect(node)\n }\n\n /**\n * Groups a set of inflections according to a language-specific display paradigm\n The default groups according to the following logic:\n 1. groups of groups with unique stem, prefix, suffix, part of speech, declension, dialect and comparison\n 2. groups of those groups with unique\n number, if it's an inflection with a grammatical case\n tense, if it's an inflection with tense but no case (i.e. a verb)\n verbs without tense or case\n adverbs\n everything else\n 3. groups of those groups with unique voice and tense\n 4. groups of inflections with unique gender, person, mood, and sort\n *\n * @param inflections\n */\n static groupInflectionsForDisplay (inflections) {\n let grouped = new Map() // eslint-disable-line prefer-const\n const aggregated = this.aggregateInflectionsForDisplay(inflections)\n\n // group inflections by part of speech\n for (const infl of aggregated) {\n const groupingKey = new InflectionGroupingKey(infl,\n [Feature.types.part, Feature.types.declension, Feature.types.dialect, Feature.types.comparison],\n {\n prefix: infl.prefix,\n suffix: infl.suffix,\n stem: infl.stem\n }\n )\n const groupingKeyStr = groupingKey.toString()\n if (grouped.has(groupingKeyStr)) {\n grouped.get(groupingKeyStr).append(infl)\n } else {\n grouped.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n\n // iterate through each group key to group the inflections in that group\n for (const kv of grouped) {\n const inflgrp = new Map()\n for (const infl of kv[1].inflections) {\n let keyprop\n let isCaseInflectionSet = false\n if (infl[Feature.types.grmCase]) {\n // grouping on number if case is defined\n keyprop = Feature.types.number\n isCaseInflectionSet = true\n } else if (infl[Feature.types.tense]) {\n // grouping on tense if tense is defined but not case\n keyprop = Feature.types.tense\n } else if (infl[Feature.types.part] === Constants.POFS_VERB) {\n // grouping on no case or tense but a verb\n keyprop = Feature.types.part\n } else if (infl[Feature.types.part] === Constants.POFS_ADVERB) {\n keyprop = Feature.types.part\n // grouping on adverbs without case or tense\n } else {\n keyprop = 'misc'\n // grouping on adverbs without case or tense\n // everything else\n }\n const groupingKey = new InflectionGroupingKey(infl, [keyprop], { isCaseInflectionSet: isCaseInflectionSet })\n const groupingKeyStr = groupingKey.toString()\n if (inflgrp.has(groupingKeyStr)) {\n inflgrp.get(groupingKeyStr).append(infl)\n } else {\n inflgrp.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n // inflgrp is now a map of groups of inflections grouped by\n // inflections with number\n // inflections without number but with tense\n // inflections of verbs without tense\n // inflections of adverbs\n // everything else\n // iterate through each inflection group key to group the inflections in that group by tense and voice\n for (const kv of inflgrp) {\n const nextGroup = new Map()\n const sortOrder = new Map()\n for (const infl of kv[1].inflections) {\n const sortkey = infl[Feature.types.grmCase] ? Math.max(infl[Feature.types.grmCase].items.map(f => f.sortOrder)) : 1\n const groupingKey = new InflectionGroupingKey(infl, [Feature.types.tense, Feature.types.voice])\n const groupingKeyStr = groupingKey.toString()\n if (nextGroup.has(groupingKeyStr)) {\n nextGroup.get(groupingKeyStr).append(infl)\n } else {\n nextGroup.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl], sortkey))\n sortOrder.set(groupingKeyStr, sortkey)\n }\n }\n kv[1].inflections = []\n const sortedKeys = Array.from(nextGroup.keys()).sort(\n (a, b) => {\n const orderA = sortOrder.get(a)\n const orderB = sortOrder.get(b)\n return orderA > orderB ? -1 : orderB > orderA ? 1 : 0\n }\n )\n for (const groupkey of sortedKeys) {\n kv[1].inflections.push(nextGroup.get(groupkey))\n }\n }\n\n // inflgrp is now a Map of groups of groups of inflections\n\n for (const kv of inflgrp) {\n const groups = kv[1]\n for (const group of groups.inflections) {\n let nextGroup = new Map() // eslint-disable-line prefer-const\n for (const infl of group.inflections) {\n // set key is case comp gend pers mood sort\n const groupingKey = new InflectionGroupingKey(infl,\n [Feature.types.grmCase, Feature.types.comparison, Feature.types.gender, Feature.types.number, Feature.types.person,\n Feature.types.tense, Feature.types.mood, Feature.types.voice])\n const groupingKeyStr = groupingKey.toString()\n if (nextGroup.has(groupingKeyStr)) {\n nextGroup.get(groupingKeyStr).append(infl)\n } else {\n nextGroup.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n group.inflections = Array.from(nextGroup.values()) // now a group of inflection groups\n }\n }\n kv[1].inflections = Array.from(inflgrp.values())\n }\n return Array.from(grouped.values())\n }\n\n /**\n * Aggregate inflections for display according to language model characteristics\n *\n * @param {Inflection[]} inflections an array of inflections\n * @returns Inflection[] the aggregated inflections\n */\n static aggregateInflectionsForDisplay (inflections) {\n // default is just to do nothing\n return inflections\n }\n\n /**\n * @deprecated\n * @param inflections\n * @returns {*}\n */\n groupInflectionsForDisplay (inflections) {\n Logger.getInstance().warn('Please use a static version of \"groupInflectionsForDisplay\" instead')\n return this.constructor.groupInflectionsForDisplay(inflections)\n }\n}\n\nexport default LanguageModel\n","import LanguageModel from './language_model.js'\nimport LatinLanguageModel from './latin_language_model.js'\nimport GreekLanguageModel from './greek_language_model.js'\nimport ArabicLanguageModel from './arabic_language_model.js'\nimport PersianLanguageModel from './persian_language_model.js'\nimport GeezLanguageModel from './geez_language_model.js'\nimport ChineseLanguageModel from './chinese_language_model.js'\nimport SyriacLanguageModel from './syriac_language_model.js'\nimport * as Constants from './constants.js'\n\nconst MODELS = new Map([\n [Constants.STR_LANG_CODE_LA, LatinLanguageModel],\n [Constants.STR_LANG_CODE_LAT, LatinLanguageModel],\n [Constants.STR_LANG_CODE_GRC, GreekLanguageModel],\n [Constants.STR_LANG_CODE_ARA, ArabicLanguageModel],\n [Constants.STR_LANG_CODE_AR, ArabicLanguageModel],\n [Constants.STR_LANG_CODE_PER, PersianLanguageModel],\n [Constants.STR_LANG_CODE_GEZ, GeezLanguageModel],\n [Constants.STR_LANG_CODE_ZHO, ChineseLanguageModel],\n [Constants.STR_LANG_CODE_SYR, SyriacLanguageModel],\n [Constants.STR_LANG_CODE_SYC, SyriacLanguageModel],\n [Constants.STR_LANG_CODE_SYR_SYRJ, SyriacLanguageModel]\n])\n\nclass LanguageModelFactory {\n /**\n * Checks whether a language is supported\n *\n * @param {string | symbol} language - Language as a language ID (symbol) or a language code (string)\n * @returns {boolean} True if language is supported, false otherwise\n */\n static supportsLanguage (language) {\n language = (typeof language === 'symbol') ? LanguageModelFactory.getLanguageCodeFromId(language) : language\n return MODELS.has(language)\n }\n\n static availableLanguages () {\n let avail = new Set() // eslint-disable-line prefer-const\n for (const model of MODELS.values()) {\n avail.add(model.languageCode)\n }\n return Array.from(avail)\n }\n\n /**\n * Returns a constructor of language model for a specific language ID.\n *\n * @param {symbol} languageID - A language ID of a desired language model.\n * @returns {LanguageModel} A language model for a given language ID.\n */\n static getLanguageModel (languageID) {\n const languageCode = LanguageModelFactory.getLanguageCodeFromId(languageID)\n return LanguageModelFactory.getLanguageModelFromCode(languageCode)\n }\n\n static getLanguageModelFromCode (languageCode) {\n if (MODELS.has(languageCode)) {\n return MODELS.get(languageCode)\n } else {\n // A default value\n return LanguageModel\n }\n }\n\n static getLanguageForCode (code = null) {\n const Model = MODELS.get(code)\n if (Model) {\n return new Model()\n }\n // for now return a default Model\n // TODO may want to throw an error\n return new LanguageModel()\n }\n\n /**\n * Converts an ISO 639-3 language code to a language ID\n *\n * @param {string} languageCode - An ISO 639-3 language code\n * @returns {symbol | undefined} A language ID or undefined if language ID is not found\n */\n static getLanguageIdFromCode (languageCode) {\n for (const languageModel of MODELS.values()) {\n if (languageModel.hasCode(languageCode)) {\n return languageModel.languageID\n }\n }\n // Noting found, return a Symbol with an undefined value (to keep return value type the same)\n return Constants.LANG_UNDEFINED\n }\n\n /**\n * Converts a language ID to an default ISO 639-3 language code for that language\n *\n * @param {symbol} languageID - A language ID\n * @returns {string | undefined} An ISO 639-3 language code or undefined if language code is not found\n */\n static getLanguageCodeFromId (languageID) {\n for (const languageModel of MODELS.values()) {\n if (languageModel.languageID.toString() === languageID.toString()) {\n return languageModel.languageCode\n }\n }\n // Noting found, return a string with an undefined value (to keep return value type the same)\n return Constants.STR_LANG_CODE_UNDEFINED\n }\n\n /**\n * Takes either a language ID or a language code and returns an object with both an ID and a code.\n *\n * @param {string | symbol} language - Either a language ID (a Symbol) or a language code (a String).\n * @returns {object} An object with the following properties:\n * {symbol} languageID\n * {string} languageCode\n */\n static getLanguageAttrs (language) {\n if (typeof language === 'symbol') {\n // `language` is a language ID\n return {\n languageID: language,\n languageCode: LanguageModelFactory.getLanguageCodeFromId(language)\n }\n } else {\n // `language` is a language code\n return {\n languageID: LanguageModelFactory.getLanguageIdFromCode(language),\n languageCode: language\n }\n }\n }\n\n /**\n * Compares two languages in either a language ID or a language code format. For this, does conversion of\n * language IDs to language code. Because fo this, it will work even for language IDs defined in\n * different modules\n *\n * @param {string | symbol} languageA - Either a language ID (a symbol) or a language code (a string).\n * @param {string | symbol} languageB - Either a language ID (a symbol) or a language code (a string).\n * @returns {boolean} True if languages are the same, false otherwise.\n */\n static compareLanguages (languageA, languageB) {\n languageA = (typeof languageA === 'symbol') ? LanguageModelFactory.getLanguageCodeFromId(languageA) : languageA\n languageB = (typeof languageB === 'symbol') ? LanguageModelFactory.getLanguageCodeFromId(languageB) : languageB\n return languageA === languageB\n }\n\n /**\n * returns true if support for the requested language id is in an experimental state\n *\n * @param {symbol} languageID - Language as a language ID (symbol)\n * @returns {boolean}\n */\n static isExperimentalLanguage (languageID) {\n return [Constants.LANG_GEEZ, Constants.LANG_SYRIAC, Constants.LANG_CHINESE].includes(languageID)\n }\n}\nexport default LanguageModelFactory\n","export default class GreekChars {\r\n static get chars () {\r\n return [\r\n '\\u0060',\r\n '\\u00A8',\r\n '\\u00AF',\r\n '\\u00B4',\r\n '\\u02BC',\r\n '\\u02BD',\r\n '\\u02D8',\r\n '\\u0345',\r\n '\\u0386',\r\n '\\u0388',\r\n '\\u0389',\r\n '\\u038A',\r\n '\\u038C',\r\n '\\u038E',\r\n '\\u038F',\r\n '\\u0390',\r\n '\\u0391',\r\n '\\u0392',\r\n '\\u0393',\r\n '\\u0394',\r\n '\\u0395',\r\n '\\u0396',\r\n '\\u0397',\r\n '\\u0398',\r\n '\\u0399',\r\n '\\u039A',\r\n '\\u039B',\r\n '\\u039C',\r\n '\\u039D',\r\n '\\u039E',\r\n '\\u039F',\r\n '\\u03A0',\r\n '\\u03A1',\r\n '\\u03A3',\r\n '\\u03A4',\r\n '\\u03A5',\r\n '\\u03A6',\r\n '\\u03A7',\r\n '\\u03A8',\r\n '\\u03A9',\r\n '\\u03AA',\r\n '\\u03AB',\r\n '\\u03AC',\r\n '\\u03AD',\r\n '\\u03AE',\r\n '\\u03AF',\r\n '\\u03B0',\r\n '\\u03B1',\r\n '\\u03B2',\r\n '\\u03B3',\r\n '\\u03B4',\r\n '\\u03B5',\r\n '\\u03B6',\r\n '\\u03B7',\r\n '\\u03B8',\r\n '\\u03B9',\r\n '\\u03BA',\r\n '\\u03BB',\r\n '\\u03BC',\r\n '\\u03BD',\r\n '\\u03BE',\r\n '\\u03BF',\r\n '\\u03C0',\r\n '\\u03C1',\r\n '\\u03C2',\r\n '\\u03C3',\r\n '\\u03C4',\r\n '\\u03C5',\r\n '\\u03C6',\r\n '\\u03C7',\r\n '\\u03C8',\r\n '\\u03C9',\r\n '\\u03CA',\r\n '\\u03CB',\r\n '\\u03CC',\r\n '\\u03CD',\r\n '\\u03CE',\r\n '\\u03DC',\r\n '\\u03DD',\r\n '\\u1F00',\r\n '\\u1F01',\r\n '\\u1F02',\r\n '\\u1F03',\r\n '\\u1F04',\r\n '\\u1F05',\r\n '\\u1F06',\r\n '\\u1F07',\r\n '\\u1F08',\r\n '\\u1F09',\r\n '\\u1F0A',\r\n '\\u1F0B',\r\n '\\u1F0C',\r\n '\\u1F0D',\r\n '\\u1F0E',\r\n '\\u1F0F',\r\n '\\u1F10',\r\n '\\u1F11',\r\n '\\u1F12',\r\n '\\u1F13',\r\n '\\u1F14',\r\n '\\u1F15',\r\n '\\u1F18',\r\n '\\u1F19',\r\n '\\u1F1A',\r\n '\\u1F1B',\r\n '\\u1F1C',\r\n '\\u1F1D',\r\n '\\u1F20',\r\n '\\u1F21',\r\n '\\u1F22',\r\n '\\u1F23',\r\n '\\u1F24',\r\n '\\u1F25',\r\n '\\u1F26',\r\n '\\u1F27',\r\n '\\u1F28',\r\n '\\u1F29',\r\n '\\u1F2A',\r\n '\\u1F2B',\r\n '\\u1F2C',\r\n '\\u1F2D',\r\n '\\u1F2E',\r\n '\\u1F2F',\r\n '\\u1F30',\r\n '\\u1F31',\r\n '\\u1F32',\r\n '\\u1F33',\r\n '\\u1F34',\r\n '\\u1F35',\r\n '\\u1F36',\r\n '\\u1F37',\r\n '\\u1F38',\r\n '\\u1F39',\r\n '\\u1F3A',\r\n '\\u1F3B',\r\n '\\u1F3C',\r\n '\\u1F3D',\r\n '\\u1F3E',\r\n '\\u1F3F',\r\n '\\u1F40',\r\n '\\u1F41',\r\n '\\u1F42',\r\n '\\u1F43',\r\n '\\u1F44',\r\n '\\u1F45',\r\n '\\u1F48',\r\n '\\u1F49',\r\n '\\u1F4A',\r\n '\\u1F4B',\r\n '\\u1F4C',\r\n '\\u1F4D',\r\n '\\u1F50',\r\n '\\u1F51',\r\n '\\u1F52',\r\n '\\u1F53',\r\n '\\u1F54',\r\n '\\u1F55',\r\n '\\u1F56',\r\n '\\u1F57',\r\n '\\u1F59',\r\n '\\u1F5B',\r\n '\\u1F5D',\r\n '\\u1F5F',\r\n '\\u1F60',\r\n '\\u1F61',\r\n '\\u1F62',\r\n '\\u1F63',\r\n '\\u1F64',\r\n '\\u1F65',\r\n '\\u1F66',\r\n '\\u1F67',\r\n '\\u1F68',\r\n '\\u1F69',\r\n '\\u1F6A',\r\n '\\u1F6B',\r\n '\\u1F6C',\r\n '\\u1F6D',\r\n '\\u1F6E',\r\n '\\u1F6F',\r\n '\\u1F70',\r\n '\\u1F71',\r\n '\\u1F72',\r\n '\\u1F73',\r\n '\\u1F74',\r\n '\\u1F75',\r\n '\\u1F76',\r\n '\\u1F77',\r\n '\\u1F78',\r\n '\\u1F79',\r\n '\\u1F7A',\r\n '\\u1F7B',\r\n '\\u1F7C',\r\n '\\u1F7D',\r\n '\\u1F80',\r\n '\\u1F81',\r\n '\\u1F82',\r\n '\\u1F83',\r\n '\\u1F84',\r\n '\\u1F85',\r\n '\\u1F86',\r\n '\\u1F87',\r\n '\\u1F88',\r\n '\\u1F89',\r\n '\\u1F8A',\r\n '\\u1F8B',\r\n '\\u1F8C',\r\n '\\u1F8D',\r\n '\\u1F8E',\r\n '\\u1F8F',\r\n '\\u1F90',\r\n '\\u1F91',\r\n '\\u1F92',\r\n '\\u1F93',\r\n '\\u1F94',\r\n '\\u1F95',\r\n '\\u1F96',\r\n '\\u1F97',\r\n '\\u1F98',\r\n '\\u1F99',\r\n '\\u1F9A',\r\n '\\u1F9B',\r\n '\\u1F9C',\r\n '\\u1F9D',\r\n '\\u1F9E',\r\n '\\u1F9F',\r\n '\\u1FA0',\r\n '\\u1FA1',\r\n '\\u1FA2',\r\n '\\u1FA3',\r\n '\\u1FA4',\r\n '\\u1FA5',\r\n '\\u1FA6',\r\n '\\u1FA7',\r\n '\\u1FA8',\r\n '\\u1FA9',\r\n '\\u1FAA',\r\n '\\u1FAB',\r\n '\\u1FAC',\r\n '\\u1FAD',\r\n '\\u1FAE',\r\n '\\u1FAF',\r\n '\\u1FB0',\r\n '\\u1FB1',\r\n '\\u1FB2',\r\n '\\u1FB3',\r\n '\\u1FB4',\r\n '\\u1FB6',\r\n '\\u1FB7',\r\n '\\u1FB8',\r\n '\\u1FB9',\r\n '\\u1FBA',\r\n '\\u1FBB',\r\n '\\u1FBC',\r\n '\\u1FBD',\r\n '\\u1FBE',\r\n '\\u1FC0',\r\n '\\u1FC1',\r\n '\\u1FC2',\r\n '\\u1FC3',\r\n '\\u1FC4',\r\n '\\u1FC6',\r\n '\\u1FC7',\r\n '\\u1FC8',\r\n '\\u1FC9',\r\n '\\u1FCA',\r\n '\\u1FCB',\r\n '\\u1FCC',\r\n '\\u1FCD',\r\n '\\u1FCE',\r\n '\\u1FCF',\r\n '\\u1FD0',\r\n '\\u1FD1',\r\n '\\u1FD2',\r\n '\\u1FD3',\r\n '\\u1FD6',\r\n '\\u1FD7',\r\n '\\u1FD8',\r\n '\\u1FD9',\r\n '\\u1FDA',\r\n '\\u1FDB',\r\n '\\u1FDD',\r\n '\\u1FDE',\r\n '\\u1FDF',\r\n '\\u1FE0',\r\n '\\u1FE1',\r\n '\\u1FE2',\r\n '\\u1FE3',\r\n '\\u1FE4',\r\n '\\u1FE5',\r\n '\\u1FE6',\r\n '\\u1FE7',\r\n '\\u1FE8',\r\n '\\u1FE9',\r\n '\\u1FEA',\r\n '\\u1FEB',\r\n '\\u1FEC',\r\n '\\u1FED',\r\n '\\u1FEE',\r\n '\\u1FF2',\r\n '\\u1FF3',\r\n '\\u1FF4',\r\n '\\u1FF6',\r\n '\\u1FF7',\r\n '\\u1FF8',\r\n '\\u1FF9',\r\n '\\u1FFA',\r\n '\\u1FFB',\r\n '\\u1FFC'\r\n ]\r\n }\r\n}\n","import LanguageModel from './language_model.js'\nimport Feature from './feature.js'\nimport * as Constants from './constants.js'\nimport Logger from './logging/logger.js'\n\nlet typeFeatures = new Map() // eslint-disable-line prefer-const\nlet typeFeaturesInitialized = false\n\n/**\n * @class LatinLanguageModel is the lass for Latin specific behavior\n */\nexport default class LatinLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_LATIN }\n static get languageCode () { return Constants.STR_LANG_CODE_LAT }\n static get languageCodes () { return [Constants.STR_LANG_CODE_LA, Constants.STR_LANG_CODE_LAT] }\n static get contextForward () { return 0 }\n static get contextBackward () { return 0 }\n static get direction () { return Constants.LANG_DIR_LTR }\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get featureValues () {\n /*\n This could be a static variable, but then it will create a circular reference:\n Feature -> LanguageModelFactory -> LanguageModel -> Feature\n */\n return new Map([\n ...LanguageModel.featureValues,\n [\n Feature.types.grmClass,\n [\n Constants.CLASS_PERSONAL,\n Constants.CLASS_REFLEXIVE,\n Constants.CLASS_POSSESSIVE,\n Constants.CLASS_DEMONSTRATIVE,\n Constants.CLASS_RELATIVE,\n Constants.CLASS_INTERROGATIVE\n ]\n ],\n [\n Feature.types.number,\n [\n Constants.NUM_SINGULAR,\n Constants.NUM_PLURAL\n ]\n ],\n [\n Feature.types.grmCase,\n [\n Constants.CASE_NOMINATIVE,\n Constants.CASE_GENITIVE,\n Constants.CASE_DATIVE,\n Constants.CASE_ACCUSATIVE,\n Constants.CASE_ABLATIVE,\n Constants.CASE_LOCATIVE,\n Constants.CASE_VOCATIVE\n ]\n ],\n [\n Feature.types.declension,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD,\n Constants.ORD_4TH,\n Constants.ORD_5TH\n ]\n ],\n [\n Feature.types.tense,\n [\n Constants.TENSE_PRESENT,\n Constants.TENSE_IMPERFECT,\n Constants.TENSE_FUTURE,\n Constants.TENSE_PERFECT,\n Constants.TENSE_PLUPERFECT,\n Constants.TENSE_FUTURE_PERFECT\n ]\n ],\n [\n Feature.types.voice,\n [\n Constants.VOICE_ACTIVE,\n Constants.VOICE_PASSIVE\n ]\n ],\n [\n Feature.types.mood,\n [\n Constants.MOOD_INDICATIVE,\n Constants.MOOD_SUBJUNCTIVE,\n Constants.MOOD_IMPERATIVE,\n Constants.MOOD_PARTICIPLE,\n Constants.MOOD_SUPINE,\n Constants.MOOD_GERUNDIVE,\n Constants.MOOD_PARTICIPLE,\n Constants.MOOD_INFINITIVE\n ]\n ],\n [\n Feature.types.conjugation,\n [\n Constants.ORD_1ST,\n Constants.ORD_2ND,\n Constants.ORD_3RD,\n Constants.ORD_4TH\n ]\n ]\n ])\n }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) {\n this.initTypeFeatures()\n }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * @override\n */\n static grammarFeatures () {\n // TODO this ideally might be grammar specific\n return [Feature.types.part, Feature.types.grmCase, Feature.types.mood, Feature.types.declension, Feature.types.tense, Feature.types.conjugation]\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display for the current node\n *\n * @param node\n */\n static canInflect (node) {\n return true\n }\n\n /**\n * Return a normalized version of a text string which can be used to compare the word for equality\n *\n * @param {string} text the source word or a text string\n * @returns the normalized form of the word (Latin replaces accents and special chars)\n * @type String\n */\n static normalizeText (text) {\n if (text) {\n text = text.replace(/[\\u00c0\\u00c1\\u00c2\\u00c3\\u00c4\\u0100\\u0102]/g, 'A')\n text = text.replace(/[\\u00c8\\u00c9\\u00ca\\u00cb\\u0112\\u0114]/g, 'E')\n text = text.replace(/[\\u00cc\\u00cd\\u00ce\\u00cf\\u012a\\u012c]/g, 'I')\n text = text.replace(/[\\u00d2\\u00d3\\u00d4\\u00df\\u00d6\\u014c\\u014e]/g, 'O')\n text = text.replace(/[\\u00d9\\u00da\\u00db\\u00dc\\u016a\\u016c]/g, 'U')\n text = text.replace(/[\\u00c6\\u01e2]/g, 'AE')\n text = text.replace(/[\\u0152]/g, 'OE')\n text = text.replace(/[\\u00e0\\u00e1\\u00e2\\u00e3\\u00e4\\u0101\\u0103]/g, 'a')\n text = text.replace(/[\\u00e8\\u00e9\\u00ea\\u00eb\\u0113\\u0115]/g, 'e')\n text = text.replace(/[\\u00ec\\u00ed\\u00ee\\u00ef\\u012b\\u012d\\u0129]/g, 'i')\n text = text.replace(/[\\u00f2\\u00f3\\u00f4\\u00f5\\u00f6\\u014d\\u014f]/g, 'o')\n text = text.replace(/[\\u00f9\\u00fa\\u00fb\\u00fc\\u016b\\u016d]/g, 'u')\n text = text.replace(/[\\u00e6\\u01e3]/g, 'ae')\n text = text.replace(/[\\u0153]/g, 'oe')\n }\n return text\n }\n\n /**\n * Return a normalized feature value, based upon the feature type and supplied value\n *\n * @param {string} featureType the feature type\n * @param {string} featureValue the feature value\n * @returns {string} the alpheios-normalized feature value\n */\n static normalizeFeatureValue (featureType, featureValue) {\n // alpheios standard for Latin is currently following Whitaker, and\n // normalize the gerundive mood to participle\n if (featureType === Feature.types.mood && featureValue === Constants.MOOD_GERUNDIVE) {\n return Constants.MOOD_PARTICIPLE\n } else if (featureType === Feature.types.part && featureValue === Constants.POFS_EXCLAMATION) {\n return Constants.POFS_INTERJECTION\n } else {\n return featureValue\n }\n }\n\n /**\n * Return a normalized part of speech for a lexeme based upon the lemma and inflection data\n *\n * @param {Lexeme} lexeme the lexeme to normalize\n * @returns {string} the alpheios-normalized part of speech value\n **/\n static normalizePartOfSpeechValue (lexeme) {\n if (lexeme.lemma.features[Feature.types.part]) {\n // Alpheios currently follows Whitaker for Latin and normalizes exclamation\n // to interjection\n if (lexeme.lemma.features[Feature.types.part].value === Constants.POFS_EXCLAMATION) {\n return Constants.POFS_INTERJECTION\n } else {\n return lexeme.lemma.features[Feature.types.part].value\n }\n } else {\n return null\n }\n }\n\n /**\n * Get a list of valid punctuation for this language\n *\n * @returns {string} a string containing valid punctuation symbols\n */\n static getPunctuation () {\n return \".,;:!?'\\\"(){}\\\\[\\\\]<>\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u2020\\u2021\\u201C\\u201D\\u0387\\u00B7\\n\\r\\u200C\\u200D\"\n }\n\n /**\n * Sets inflection grammar properties based on its characteristics\n *\n * @param {Inflection} inflection - An inflection object\n * @returns {object} Inflection properties\n */\n static getInflectionConstraints (inflection) {\n // eslint-disable-next-line prefer-const\n let grammar = {\n fullFormBased: false,\n suffixBased: false,\n pronounClassRequired: false\n }\n if (inflection.hasOwnProperty(Feature.types.part)) {\n if ([Constants.POFS_VERB, Constants.POFS_VERB_PARTICIPLE, Constants.POFS_SUPINE, Constants.POFS_GERUNDIVE].includes(inflection[Feature.types.part].value)) {\n grammar.fullFormBased = true\n grammar.suffixBased = true\n } else if (inflection[Feature.types.part].value === Constants.POFS_PRONOUN) {\n grammar.fullFormBased = true\n } else {\n grammar.suffixBased = true\n }\n } else {\n Logger.getInstance().warn('Unable to set grammar: part of speech data is missing or is incorrect', inflection[Feature.types.part])\n }\n\n return grammar\n }\n}\n","import LMF from './language_model_factory.js'\nimport Feature from './feature.js'\nimport Translation from './translation.js'\nimport { v4 as uuidv4 } from 'uuid'\nimport Logger from './logging/logger.js'\n\n/**\n * Lemma, a canonical form of a word.\n */\nclass Lemma {\n /**\n * Initializes a Lemma object.\n *\n * @param {string} word - A word.\n * @param {symbol | string} languageID - A language ID (symbol, please use this) or a language code of a word.\n * @param {string[]} principalParts - the principalParts of a lemma.\n * @param {object} features - the grammatical features of a lemma.\n\n * @param {Translation} transaltions - translations from python service\n */\n constructor (word, languageID, principalParts = [], features = {}) {\n if (!word) {\n throw new Error('Word should not be empty.')\n }\n\n if (!languageID) {\n throw new Error('Language should not be empty.')\n }\n\n // Compatibility code for something providing languageCode instead of languageID\n this.languageID = undefined\n this.languageCode = undefined\n ;({ languageID: this.languageID, languageCode: this.languageCode } = LMF.getLanguageAttrs(languageID))\n\n this.word = word\n this.principalParts = principalParts\n this.features = {}\n\n this.ID = uuidv4()\n }\n\n get language () {\n Logger.getInstance().warn('Please use \"languageID\" instead of \"language\"')\n return this.languageCode\n }\n\n get displayWord () {\n return this.word.replace(/\\d+$/, '')\n }\n\n static readObject (jsonObject) {\n const language = jsonObject.language ? jsonObject.language : jsonObject.languageCode\n // eslint-disable-next-line prefer-const\n let resLemma = new Lemma(jsonObject.word, language, jsonObject.principalParts, jsonObject.pronunciation)\n\n if (jsonObject.features && jsonObject.features.length > 0) {\n jsonObject.features.forEach(featureSource => {\n resLemma.addFeature(Feature.readObject(featureSource))\n })\n }\n\n if (jsonObject.translation) {\n resLemma.translation = Translation.readObject(jsonObject.translation, resLemma)\n }\n return resLemma\n }\n\n convertToJSONObject () {\n let resultFeatures = [] // eslint-disable-line prefer-const\n for (const feature of Object.values(this.features)) {\n resultFeatures.push(feature.convertToJSONObject())\n }\n // eslint-disable-next-line prefer-const\n let resultLemma = {\n word: this.word,\n language: this.languageCode,\n principalParts: this.principalParts,\n features: resultFeatures\n }\n\n if (this.translation) {\n resultLemma.translation = this.translation.convertToJSONObject()\n }\n return resultLemma\n }\n\n /**\n * @deprecated Please use `addFeature` instead.\n * Sets a grammatical feature for a lemma. Some features can have multiple values, In this case\n * an array of Feature objects will be provided.\n * Values are taken from features and stored in a 'feature.type' property as an array of values.\n * @param {Feature | Feature[]} data\n */\n set feature (data) {\n Logger.getInstance().warn('Please use \"addFeature\" instead')\n if (!data) {\n throw new Error('feature data cannot be empty.')\n }\n if (!Array.isArray(data)) {\n data = [data]\n }\n\n const type = data[0].type\n this.features[type] = []\n for (const element of data) {\n if (!(element instanceof Feature)) {\n throw new Error('feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(element.languageID, this.languageID)) {\n throw new Error('Language \"' + element.languageID.toString() + '\" of a feature does not match a language \"' +\n this.languageID.toString() + '\" of a Lemma object.')\n }\n\n this.features[type].push(element)\n }\n }\n\n /**\n * Sets a grammatical feature of a lemma. Feature is stored in a `feature.type` property.\n *\n * @param {Feature} feature - A feature object with one or multiple values.\n */\n addFeature (feature) {\n if (!feature) {\n throw new Error('feature data cannot be empty.')\n }\n\n if (!(feature instanceof Feature)) {\n throw new Error('feature data must be a Feature object.')\n }\n\n if (!LMF.compareLanguages(feature.languageID, this.languageID)) {\n throw new Error('Language \"' + feature.languageID.toString() + '\" of a feature does not match a language \"' +\n this.languageID.toString() + '\" of a Lemma object.')\n }\n\n this.features[feature.type] = feature\n }\n\n /**\n * Sets multiple grammatical features of a lemma.\n *\n * @param {Feature[]} features - Features to be added.\n */\n addFeatures (features) {\n if (!Array.isArray(features)) {\n throw new Error('Features must be in an array')\n }\n\n for (const feature of features) {\n this.addFeature(feature)\n }\n }\n\n /**\n * Sets a translation from python service.\n *\n * @param {Translation} translation - A translation object\n */\n addTranslation (translation) {\n if (!translation) {\n throw new Error('translation data cannot be empty.')\n }\n\n if (translation.constructor.name.indexOf('Translation') === -1) {\n throw new Error('translation data must be a Translation object.')\n }\n\n this.translation = translation\n }\n\n /**\n * Test to see if two lemmas are full homonyms.\n *\n * @param {Lemma} lemma - the lemma to compare.\n * @param {object} options - Additional comparison options.\n * @param {boolean} options.normalize - Whether to normalize words before comparison.\n * @param {boolean} options.ignorePofs - Whether to ignore the part of speech in comparison.\n * (use if the lexeme data is needed\n * for a part of speech comparison)\n * @returns {boolean} true or false.\n */\n isFullHomonym (lemma, { normalize = false, ignorePofs = false } = {}) {\n // If parts of speech do not match this is not a full homonym\n // don't check if told to ignorePofs\n if (!ignorePofs &&\n (!this.features[Feature.types.part] ||\n !lemma.features[Feature.types.part] ||\n !this.features[Feature.types.part].isEqual(lemma.features[Feature.types.part]))) {\n return false\n }\n\n const lm = LMF.getLanguageModel(this.languageID)\n // Check if words are the same\n const areSameWords = normalize\n ? lm.compareWords(this.word, lemma.word, true,\n { normalizeTrailingDigit: true })\n : this.word === lemma.word\n\n // if they have differing trailing digits, they cannot be the same\n const thisHasTrailingDigit = lm.hasTrailingDigit(this.word)\n const otherHasTrailingDigit = lm.hasTrailingDigit(lemma.word)\n if (thisHasTrailingDigit && otherHasTrailingDigit) {\n const thisTrailingDigit = this.word.match(/\\d+$/)[0]\n const otherTrailingDigit = lemma.word.match(/\\d+$/)[0]\n if (thisTrailingDigit !== otherTrailingDigit) {\n return false\n }\n }\n\n return areSameWords\n }\n\n /**\n * Disambiguate between this and the other lemma.\n *\n * @param {string} otherLemma - The other lemma for disambiguation.\n * @returns {string} - A disambiguated word.\n */\n disambiguate (otherLemma) {\n const langModel = LMF.getLanguageModel(this.languageID)\n\n // Check if words are the same\n const areSameWords = langModel.compareWords(this.word, otherLemma.word, true, { normalizeTrailingDigit: true })\n if (!areSameWords) {\n throw new Error('Words that differ cannot be disambiguated')\n }\n\n const thisHasMixedCase = langModel.hasUpperCase(this.word)\n const otherHasMixedCase = langModel.hasUpperCase(otherLemma.word)\n /*\n If one of the words has both upper and lower case letters, it will be returned right away, without\n go through other normalizations.\n */\n if (otherHasMixedCase) {\n return otherLemma.word\n }\n if (thisHasMixedCase) {\n return this.word\n }\n /*\n If one of the word has characters that are not in the NFC Unicode Normalization Form,\n return that word, normalized.\n */\n const thisNeesNormalization = langModel.needsNormalization(this.word)\n const otherNeesNormalization = langModel.needsNormalization(otherLemma.word)\n if (otherNeesNormalization) {\n return langModel.normalizeText(otherLemma.word)\n }\n if (thisNeesNormalization) {\n return langModel.normalizeText(this.word)\n }\n /*\n If one of the words has a trailing digit, return a word with a trailing digit.\n */\n const thisHasTrailingDigit = langModel.hasTrailingDigit(this.word)\n const otherHasTrailingDigit = langModel.hasTrailingDigit(otherLemma.word)\n if (otherHasTrailingDigit) {\n return otherLemma.word\n }\n if (thisHasTrailingDigit) {\n return this.word\n }\n return this.word\n }\n\n /**\n * extracts lemma.word and all principal parts for flashcards export\n *\n */\n get wordPrincipalParts () {\n const allParts = [...this.principalParts]\n if (!this.principalParts.includes(this.word)) {\n allParts.push(this.word)\n }\n return allParts.join(', ')\n }\n}\n\nexport default Lemma\n","import Lemma from './lemma.js'\nimport Inflection from './inflection.js'\nimport Feature from './feature.js'\nimport DefinitionSet from './definition-set.js'\nimport LMF from './language_model_factory.js'\nimport LM from './language_model.js'\nimport ResourceProvider from './resource_provider.js'\n\n/**\n * A basic unit of lexical meaning. Contains a primary Lemma object, one or more Inflection objects\n * and a DefinitionSet\n */\nclass Lexeme {\n /**\n * Initializes a Lexeme object.\n *\n * @param {Lemma} lemma - A lemma object.\n * @param {Inflection[]} inflections - An array of inflections.\n * @param {DefinitionSet} meaning - A set of definitions.\n */\n constructor (lemma, inflections, meaning = null) {\n if (!lemma) {\n throw new Error('Lemma should not be empty.')\n }\n\n if (!(lemma instanceof Lemma)) {\n throw new Error('Lemma should be of Lemma object type.')\n }\n\n if (!inflections) {\n throw new Error('Inflections data should not be empty.')\n }\n\n if (!Array.isArray(inflections)) {\n throw new Error('Inflection data should be provided in an array.')\n }\n\n for (const inflection of inflections) {\n if (!(inflection instanceof Inflection)) {\n throw new Error('All inflection data should be of Inflection object type.')\n }\n }\n\n if (meaning !== null && !(meaning instanceof DefinitionSet)) {\n throw new Error('Meaning should be of DefinitionSet object type.')\n }\n\n this.lemma = lemma\n this.altLemmas = []\n this.inflections = []\n this.addInflections(inflections)\n this.meaning = meaning || new DefinitionSet(this.lemma.word, this.lemma.languageID)\n this.disambiguated = false\n this.selectedInflection = null\n }\n\n /**\n * Set the selected inflection for a lexeme which has had its\n * inflections disambiguated\n *\n * @param {Inflection} inflection the selected inflection\n */\n setSelectedInflection (inflection) {\n this.selectedInflection = inflection\n }\n\n /**\n * Get the selected inflection for a lexeme which has had its\n * inflections disambiguated\n *\n * @returns {Inflection} (or null if none is selected)\n */\n getSelectedInflection () {\n return this.selectedInflection\n }\n\n /**\n * Gets the selected inflection formatted for display\n * (returns an array because the display is grouped by feature\n * but there should only be one inflection in the array)\n *\n * @returns {Array} if no selected inflection the array will be empty\n */\n getGroupedSelectedInflection () {\n if (this.selectedInflection) {\n const lm = LMF.getLanguageModel(this.lemma.languageID)\n return lm.groupInflectionsForDisplay([this.selectedInflection])\n } else {\n return []\n }\n }\n\n /**\n * add an inflection to the lexeme\n *\n * @param {Inflection} inflection\n */\n addInflection (inflection) {\n inflection.lemma = this.lemma\n inflection.lexeme = this\n this.inflections.push(inflection)\n }\n\n /**\n * Adds one or several inflections to a Lexeme object.\n *\n * @param {Inflection | Inflection[]} inflections - a single Inflection object or an array of Inflection\n * objects to add to a lexeme.\n */\n addInflections (inflections) {\n if (!Array.isArray(inflections)) { inflections = [inflections] }\n inflections.forEach(i => this.addInflection(i))\n }\n\n /**\n * add an alternative lemma to the lexeme\n *\n * @param {Lemma} lemma\n */\n addAltLemma (lemma) {\n this.altLemmas.push(lemma)\n }\n\n /**\n * test to see if a lexeme is populated with meaningful data\n * Returns true if any of these are true:\n * its lemma has morphological features defined\n * it has one ore more definitions supplied in the meaning\n * it has one ore more inflections\n *\n * @returns {boolean}\n */\n isPopulated () {\n return Object.entries(this.lemma.features).length > 0 ||\n !this.meaning.isEmpty() ||\n this.inflections.length > 0\n }\n\n /**\n * Checks if any short definitions are stored within this lexeme.\n *\n * @returns {boolean} - true if any definitions are stored, false otherwise.\n */\n get hasShortDefs () {\n return Boolean(this.meaning && this.meaning.hasShortDefs)\n }\n\n /**\n * Checks if any full definitions are stored within this lexeme.\n *\n * @returns {boolean} - true if any definitions are stored, false otherwise.\n */\n get hasFullDefs () {\n return Boolean(this.meaning && this.meaning.hasFullDefs)\n }\n\n /**\n * Checks whether a lemma of a current lexeme is a full homonym of the lemma of the other lexeme.\n *\n * @param {Lexeme} otherLexeme - a lexeme whose lemma will be compared with the lemma of a current lexeme.\n * @param {boolean} normalize - whether to use normalization for word comparison.\n * @returns {boolean} - true if two aforementioned lemmas are full homonyms, false otherwise.\n */\n isFullHomonym (otherLexeme, { normalize = false } = {}) {\n const lm = LMF.getLanguageModel(this.lemma.languageID)\n const normalizedPofs = lm.normalizePartOfSpeechValue(this)\n if (normalizedPofs === lm.normalizePartOfSpeechValue(otherLexeme)) {\n const ignorePofs = Boolean(normalizedPofs !== this.lemma.features[Feature.types.part])\n return this.lemma.isFullHomonym(otherLexeme.lemma, { normalize, ignorePofs })\n } else {\n return false\n }\n }\n\n /**\n * Determines whether a lexeme can be disambiguated with the other disambiguator lexeme.\n *\n * @param {Lexeme} disambiguator - A possible disambiguator; a lexeme that is checked\n * whether it can disambiguate a current lexeme.\n * @returns {boolean} - True if a current lexeme can be disambiguated with a disambiguator, false otherwise.\n */\n canBeDisambiguatedWith (disambiguator) {\n /*\n A Lexeme can be used as an disambiguator if:\n - its lemma is a full homonym of a disambiguator's lemma;\n - disambiguator, comparing to a lexeme, has some extra features worth adding such as:\n - some additional information in a word (e.g. a trailing digit) that lemma has not;\n - at least one inflection.\n */\n const hasExtraFeatures = disambiguator.inflections.length || LM.hasTrailingDigit(disambiguator.lemma.word)\n return this.isFullHomonym(disambiguator, { normalize: true }) && hasExtraFeatures\n }\n\n /**\n * disambiguate the inflections in this lexeme with those in another lexeme\n *\n * @param {Lexeme} lexeme the lexeme to be disambiguated\n * @param {Lexeme} disambiguator the lexeme to use to disambiguate\n * @returns {Lexeme} a new lexeme, if disambiguation was successful the\n * disambiguated inflection will be selected\n */\n static disambiguateInflections (lexeme, disambiguator) {\n let newLexeme = new Lexeme(lexeme.lemma, lexeme.inflections, lexeme.meaning) // eslint-disable-line prefer-const\n const lm = LMF.getLanguageModel(lexeme.lemma.languageID)\n if (lexeme.canBeDisambiguatedWith(disambiguator)) {\n // iterate through this lexemes inflections and see if one is disambiguated\n // there should be only one that matches\n for (const inflection of newLexeme.inflections) {\n for (const disambiguatorInflection of disambiguator.inflections) {\n const normalizedPofs = lm.normalizePartOfSpeechValue(disambiguator)\n const ignorePofs = Boolean(normalizedPofs !== disambiguator.lemma.features[Feature.types.part])\n const inflMatch = inflection.disambiguatedBy(disambiguatorInflection, { ignorePofs })\n if (inflMatch.match) {\n if (inflMatch.exactMatch) {\n // if it was an exact match, we can use the source lexeme's inflection\n // which may carry more information\n newLexeme.setSelectedInflection(inflection)\n } else {\n // if it was not an exact match (e.g. if the source inflection\n // had a multi-valued feature), use the disambiguator lexeme's\n // inflection\n newLexeme.setSelectedInflection(disambiguatorInflection)\n }\n }\n }\n }\n }\n return newLexeme\n }\n\n /**\n * Set the disambiguation flag of this lexeme\n * if a disambiguator lexeme is provided, it's lemma word will be used\n * to update the word of this lexeme's lemma\n *\n * @param {Lexeme} disambiguator\n */\n setDisambiguation (disambiguator = null) {\n this.disambiguated = true\n if (disambiguator) {\n this.lemma.word = this.lemma.disambiguate(disambiguator.lemma)\n }\n }\n\n getGroupedInflections () {\n const lm = LMF.getLanguageModel(this.lemma.languageID)\n return lm.groupInflectionsForDisplay(this.inflections)\n }\n\n static readObject (jsonObject) {\n const lemma = Lemma.readObject(jsonObject.lemma)\n let inflections = [] // eslint-disable-line prefer-const\n for (const inflection of jsonObject.inflections) {\n inflections.push(Inflection.readObject(inflection))\n }\n\n const lexeme = new Lexeme(lemma, inflections)\n if (jsonObject.meaning) {\n lexeme.meaning = DefinitionSet.readObject(jsonObject.meaning)\n }\n\n if (jsonObject.provider) {\n const provider = ResourceProvider.readObject(jsonObject.provider)\n return ResourceProvider.getProxy(provider, lexeme)\n } else {\n return lexeme\n }\n }\n\n convertToJSONObject (addMeaning = false) {\n let resInflections = [] // eslint-disable-line prefer-const\n this.inflections.forEach(inflection => { resInflections.push(inflection.convertToJSONObject()) })\n\n const resLexeme = {\n lemma: this.lemma.convertToJSONObject(),\n inflections: resInflections\n }\n\n if (addMeaning) {\n resLexeme.meaning = this.meaning.convertToJSONObject()\n }\n\n if (this.provider) {\n resLexeme.provider = this.provider.convertToJSONObject()\n }\n\n return resLexeme\n }\n\n /**\n * Get a sort function for an array of lexemes which applies a primary and secondary\n * sort logic using the sort order specified for each feature. Sorts in descending order -\n * higher sort order means it should come first\n *\n * @param {string} primary feature name to use as primary sort key\n * @param {string} secondary feature name to use as secondary sort key\n * @returns {Function} function which can be passed to Array.sort\n */\n static getSortByTwoLemmaFeatures (primary, secondary) {\n return (a, b) => {\n if ((a.lemma.features[primary] && b.lemma.features[primary]) ||\n (!a.lemma.features[primary] && !b.lemma.features[[primary]])) {\n let primarySort\n if (a.lemma.features[primary] && b.lemma.features[primary]) {\n // if both lemmas have the primary sort key, then sort\n primarySort = a.lemma.features[primary].compareTo(b.lemma.features[primary])\n } else {\n // if neither lemma has the primary sort key, then the primary sort is equal\n primarySort = 0\n }\n if (primarySort !== 0) {\n return primarySort\n } else if (a.lemma.features[secondary] && b.lemma.features[secondary]) {\n return a.lemma.features[secondary].compareTo(b.lemma.features[secondary])\n } else if (a.lemma.features[secondary] && !b.lemma.features[secondary]) {\n return -1\n } else if (!a.lemma.features[secondary] && b.lemma.features[secondary]) {\n return 1\n } else {\n // neither have the secondary sort key so they are equal\n return 0\n }\n } else if (a.lemma.features[primary] && !b.lemma.features[primary]) {\n return -1\n } else if (!a.lemma.features[primary] && b.lemma.features[primary]) {\n return 1\n } else {\n return 0\n }\n }\n }\n}\nexport default Lexeme\n","let singleInstance\n\n// TODO: We should maybe try to capture the file name and the line number, if possible\n\n/**\n * A simple proxy for the console log functionality\n */\nexport default class Logger {\n /**\n * Creates an instance of the Logger class with the parameters specified.\n *\n * @param {boolean} verbose - In verbose mode, messages will be printed on all levels (err, warn. log, info).\n * In non-verbose mode, only error messages will be displayed.\n * @param {boolean} prepend - Whether to prepend text messages with the alpheios message.\n * @param {boolean} trace - Whether to print a call stack.\n */\n constructor ({ verbose = false, prepend = true, trace = false } = {}) {\n this._verboseMode = verbose\n this._prependMode = prepend\n this._traceMode = trace\n }\n\n /**\n * Returns a single instance of the Logger object. If one does not exist, it will be created\n * with the options specified. If the Logger instance is already created, but there are some\n * options provided, options of the existing Logger object will be changed to match the ones supplied.\n *\n * @param {object} options - Options of the Logger constructor {@see Logger#constructor}.\n * @returns {Logger} - An instance of existing or newly created Logger object.\n */\n static getInstance (options = {}) {\n if (!singleInstance) {\n singleInstance = new Logger(options)\n } else {\n // There is an instance of the Logger already created, but we might need to change its parameters\n // It will be done only if the caller provided meaningful values to options' props\n if (typeof options.verbose !== 'undefined') {\n console.info('Setting a verbose mode')\n singleInstance.setVerboseMode(options.verbose)\n }\n if (typeof options.prepend !== 'undefined') {\n console.info('Setting a prepend mode')\n singleInstance.setVerboseMode(options.prepend)\n }\n if (typeof options.trace !== 'undefined') {\n console.info('Setting a trace mode')\n singleInstance.setTraceMode(options.trace)\n }\n }\n return singleInstance\n }\n\n setVerboseMode (mode) {\n this._verboseMode = mode\n return this\n }\n\n setPrependMode (mode) {\n this._prependMode = mode\n return this\n }\n\n setTraceMode (mode) {\n this._traceMode = mode\n return this\n }\n\n verboseModeOn () {\n this.setVerboseMode(true)\n return this\n }\n\n verboseModeOff () {\n this.setVerboseMode(false)\n return this\n }\n\n prependModeOn () {\n this.setPrependMode(true)\n return this\n }\n\n prependModeOff () {\n this.setPrependMode(false)\n return this\n }\n\n traceModeOn () {\n this.setTraceMode(true)\n return this\n }\n\n traceModeOff () {\n this.setTraceMode(false)\n return this\n }\n\n error (...data) {\n if (this._prependMode && data && data.length > 0 && typeof data[0] === 'string') {\n data[0] = `Alpheios error: ${data[0]}`\n }\n console.error(...data)\n if (this._traceMode) {\n console.trace()\n }\n }\n\n warn (...data) {\n if (this._verboseMode) {\n if (this._prependMode && data && data.length > 0 && typeof data[0] === 'string') {\n data[0] = `Alpheios warn: ${data[0]}`\n }\n console.warn(...data)\n if (this._traceMode) {\n console.trace()\n }\n }\n }\n\n log (...data) {\n if (this._verboseMode) {\n if (this._prependMode && data && data.length > 0 && typeof data[0] === 'string') {\n data[0] = `Alpheios log: ${data[0]}`\n }\n console.log(...data)\n if (this._traceMode) {\n console.trace()\n }\n }\n }\n\n info (...data) {\n if (this._verboseMode) {\n if (this._prependMode && data && data.length > 0 && typeof data[0] === 'string') {\n data[0] = `Alpheios info: ${data[0]}`\n }\n console.info(...data)\n if (this._traceMode) {\n console.trace()\n }\n }\n }\n}\n","import Logger from '../logging/logger.js'\n\n/**\n * A single option item with access methods.\n */\nexport default class OptionItem {\n constructor (item, key, storageAdapter) {\n if (!item) {\n throw new Error('Item cannot be empty')\n }\n if (!key) {\n throw new Error('Key cannot be empty')\n }\n if (!storageAdapter) {\n throw new Error('Storage adapter object should be provided')\n }\n for (const key of Object.keys(item)) {\n this[key] = item[key]\n }\n this.currentValue = this.defaultValue\n this.name = key\n this.storageAdapter = storageAdapter\n }\n\n textValues () {\n return this.values.map(value => value.text)\n }\n\n /**\n * If `prop` is not specified, returns a value object of a current item.\n * Otherwise, returns a value of a property specified by `prop`.\n *\n * @param {string} prop - A name of a property of a current items that must be returned.\n * Values currently supported are: `text`, `value`, undefined.\n * @returns {* | Array<*>} - A single item or an array of items. Item type depends\n * on the value of the `prop` or the lack of it.\n */\n currentItem (prop = undefined) {\n let item = []\n for (const value of this.values) {\n if (this.multiValue) {\n if (this.currentValue.includes(value.value)) {\n const itemValue = prop ? value[prop] : value\n item.push(itemValue)\n }\n } else {\n if (value.value === this.currentValue) {\n item = prop ? value[prop] : value\n }\n }\n }\n return item\n }\n\n currentTextValue () {\n return this.currentItem('text')\n }\n\n addValue (value, text) {\n this.values.push({ value: value, text: text })\n return this\n }\n\n setValue (value) {\n this.currentValue = value\n this.save()\n return this\n }\n\n setTextValue (textValue) {\n this.currentValue = this.multiValue ? [] : ''\n for (const value of this.values) {\n if (this.multiValue) {\n for (const tv of textValue) {\n if (value.text === tv) { this.currentValue.push(value.value) }\n }\n } else {\n if (value.text === textValue) { this.currentValue = value.value }\n }\n }\n this.save()\n return this\n }\n\n removeItem () {\n this.currentValue = null\n this.storageAdapter.remove(this.name).then(\n () => {\n // Options storage succeeded\n },\n (errorMessage) => {\n Logger.getInstance().error(`Unexpected error resetting Alpheios option ${this.name}: ${errorMessage}`)\n }\n )\n }\n\n /**\n * Saves an option value to the local storage.\n */\n save () {\n let option = {} // eslint-disable-line prefer-const\n option[this.name] = JSON.stringify(this.currentValue)\n\n this.storageAdapter.set(option).then(\n () => {\n // Options storage succeeded\n },\n (errorMessage) => {\n Logger.getInstance().error(`Unexpected error storing Alpheios option ${this.name}: ${errorMessage}`)\n }\n )\n }\n\n /**\n *\n * @param {Array[Object]} valuesArr - Array[option's values]\n */\n uploadValuesFromArray (valuesArr) {\n this.values = [...valuesArr]\n this.defaultValue = this.values[0].value\n }\n}\n","import Logger from '../logging/logger.js'\nimport OptionItem from './option-item.js'\n/**\n * A set of options grouped by domain. Domain name should be passed in `defaults.domain`.\n */\nexport default class Options {\n /**\n * Options is a class which encapsulates defaults and user preferences\n *\n * @param {object} defaults - defaults for the instance of the class.\n * Use DefaultsLoader class to convert defaults data from different sources.\n * Mandatory fields:\n * {string} domain - A domain name that defines options context\n * {Object} items - An object that represents options that are exposed to the user. Each property is an option name.\n * @param {StorageAdapter} storageAdapter - A storage adapter implementation\n */\n constructor (defaults, storageAdapter) {\n if (!defaults || !defaults.domain || !defaults.items || !defaults.version) {\n throw new Error('Defaults have no obligatory \"domain\", \"version\" and \"items\" properties')\n }\n if (!storageAdapter) {\n throw new Error('No storage adapter implementation provided')\n }\n\n this.defaults = defaults\n this.domain = defaults.domain\n this.version = defaults.version.toString()\n this.storageAdapter = storageAdapter\n this.items = Options.initItems(this.defaults.items, this.storageAdapter, this.domain, this.version)\n }\n\n static initItems (defaults, storageAdapter, domain, version) {\n let items = {} // eslint-disable-line prefer-const\n for (const [option, value] of Object.entries(defaults)) {\n if (value.group) {\n items[option] = []\n for (const [group, item] of Object.entries(value.group)) {\n const key = Options.constructKey(domain, version, option, group)\n items[option].push(new OptionItem(item, key, storageAdapter))\n }\n } else {\n const key = Options.constructKey(domain, version, option)\n items[option] = new OptionItem(value, key, storageAdapter)\n }\n }\n return items\n }\n\n /**\n * Reset all options to default values\n */\n async reset () {\n await this.storageAdapter.clearAll()\n this.items = Options.initItems(this.defaults.items, this.storageAdapter, this.domain, this.version)\n }\n\n get names () {\n return Object.keys(this.items)\n }\n\n /**\n * Loads options from the storage. Returns a promise that is resolved if options are loaded\n * successfully and that is rejectd if there was an error retrieving them.\n *\n * @returns {Promise}\n */\n async load () {\n try {\n const values = await this.storageAdapter.get()\n for (const key in values) {\n const parsedKey = Options.parseKey(key)\n // TODO when we do increase the version we should handle conversion\n if (this.items.hasOwnProperty(parsedKey.name) && this.version === parsedKey.version) { // eslint-disable-line no-prototype-builtins\n if (parsedKey.group) {\n this.items[parsedKey.name].forEach((f) => {\n if (f.name === key) {\n try {\n f.currentValue = JSON.parse(values[key])\n } catch (e) {\n Logger.getInstance().warn(`Unable to parse Alpheios option value for ${parsedKey.name} from ${values[parsedKey.name]}`, e)\n }\n }\n })\n } else {\n try {\n this.items[parsedKey.name].currentValue = JSON.parse(values[key])\n } catch (e) {\n // invalid value\n Logger.getInstance().warn(`Unable to parse Alpheios option value for ${parsedKey.name} from ${values[parsedKey.name]}`, e)\n }\n }\n }\n }\n return this\n } catch (error) {\n const message = `Unexpected error retrieving options for Alpheios from local storage: ${error}. Default values ` +\n 'will be used instead'\n Logger.getInstance().error(message)\n }\n }\n\n /**\n * Construct a key for a stored setting\n * To future proof the stored settings, we include domain and version\n * in the key name. Grouped settings are also flattened.\n *\n * @param {string} domain - the setting domain\n * @param {string} version - the setting version\n * @param {string} name - the setting name\n * @param {string} group - optional setting group\n */\n static constructKey (domain, version, name, group = null) {\n let key = `${domain}__${version}__${name}`\n if (group) {\n key = `${key}__${group}`\n }\n return key\n }\n\n /**\n * Parse a stored setting name into a semantically meaningful object\n *\n * @param key\n */\n static parseKey (key) {\n const [domain, version, name, group] = key.split('__', 4)\n let parsed\n try {\n parsed = {\n domain: domain,\n version: version,\n name: name,\n group: group\n }\n } catch (e) {\n Logger.getInstance().warn(`Failed to parse stored Alpheios options key ${key}`)\n }\n return parsed\n }\n\n /**\n * Converts optionItems to the object: { name of the option: currentValue }\n *\n * @returns {object}\n */\n get formatLabelValueList () {\n let result = {} // eslint-disable-line prefer-const\n Object.keys(this.items).forEach(nameItem => {\n if (this.items[nameItem].currentValue !== undefined) {\n result[nameItem] = this.items[nameItem].currentValue\n }\n })\n return result\n }\n\n /**\n * Uploads values list from array if an option has valuesArray feature\n *\n * @param {object} valuesArrayList - with format nameValuesArray: Array[option's values]\n */\n checkAndUploadValuesFromArray (valuesArrayList) {\n Object.values(this.items).forEach(optionItem => {\n if (optionItem.valuesArray && !optionItem.values && valuesArrayList[optionItem.valuesArray]) {\n optionItem.uploadValuesFromArray(valuesArrayList[optionItem.valuesArray])\n }\n })\n }\n\n /**\n *\n * @param {string} domainPostfix - additional string for creating unique domain name\n * @param {StorageAdapter} storageAdapter - class of the storage adapter\n */\n clone (domainPostfix, storageAdapter) {\n let defaults = Object.assign({}, this.defaults) // eslint-disable-line prefer-const\n\n defaults.domain = `${defaults.domain}-${domainPostfix}`\n const newOptions = new Options(defaults, new storageAdapter(defaults.domain)) // eslint-disable-line new-cap\n Object.keys(newOptions.items).forEach(optionKey => {\n let newOptionItem = newOptions.items[optionKey] // eslint-disable-line prefer-const\n\n if (this.items[optionKey].values) {\n newOptionItem.uploadValuesFromArray(this.items[optionKey].values)\n }\n })\n\n return newOptions\n }\n}\n","import LanguageModel from './language_model.js'\nimport * as Constants from './constants.js'\n\nlet typeFeatures = new Map() // eslint-disable-line prefer-const\nlet typeFeaturesInitialized = false\n\n/**\n * @class PersianLanguageModel is the lass for Persian specific behavior\n */\nexport default class PersianLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_PERSIAN }\n\n static get languageCode () { return Constants.STR_LANG_CODE_PER }\n\n static get languageCodes () { return [Constants.STR_LANG_CODE_PER, Constants.STR_LANG_CODE_FAS, Constants.STR_LANG_CODE_FA, Constants.STR_LANG_CODE_FA_IR] }\n\n static get contextForward () { return 0 }\n\n static get contextBackward () { return 0 }\n\n static get direction () { return Constants.LANG_DIR_RTL }\n\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display for the current node\n *\n * @param node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * Get a list of valid punctuation for this language\n *\n * @returns {string} a string containing valid punctuation symbols\n */\n static getPunctuation () {\n return \"\\\\-\\\\.,;:!?'\\\"(){}\\\\[\\\\]<>\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u2020\\u2021\\u201C\\u201D\\u0387\\u00B7\\n\\r\\u200C\\u200D\"\n }\n}\n","/**\n * A public information about published event that is returned to subscriber.\n * It can be used by subscribers that are listening for more than one event\n * to distinguish between different event types.\n * We could pass an PsEvent object to subscribers instead of PsEventData\n * but it's better not to expose some details of PsEvent implementation to the outside.\n * This will help to avoid creating dependencies on PsEvent internals within subscribers functions.\n * Thus an PsEventData object can be considered as a publicly exposed part of PsEvent data.\n * If needed, PsEventData can present PsEvent data to subscriber differently,\n * not in the way PsEvent stores it. This makes sense as subscriber might be interested in\n * a different angle of PsEvent information. PsEventData may add properties or methods\n * that do not needed within an PsEvent, but might be useful to subscribers.\n */\nexport default class PsEventData {\n /**\n * @param {PsEvent} event - An event that is being published.\n * @param {string} [caller=''] - The name of the function from where an event was published.\n */\n constructor (event, caller = '') {\n this.name = event.name\n this.publisher = event.publisher\n this.caller = caller\n }\n\n /**\n * Returns a description of an event data in a printable form. Example:\n * LexicalQuery.finalize -> [Lexical Query Complete]\n * If caller function is not specified during a `pub()` call, description will be:\n * LexicalQuery -> [Lexical Query Complete]\n *\n * @returns {string} - An event data description.\n */\n get description () {\n return this.caller ? `${this.publisher}.${this.caller} -> [${this.name}]` : `${this.publisher} -> [${this.name}]`\n }\n}\n","import { v4 as uuidv4 } from 'uuid'\nimport PsEventData from '../../src/ps-events/ps-event-data.js'\n\n/**\n * An event in pub/sub (publish–subscribe) design pattern\n */\nexport default class PsEvent {\n /**\n * @param {string} name - A name of the event.\n * @param {Function} publisher - A constructor function of a publisher.\n * PsEvent uses its `name` property to set its publisher name field.\n */\n constructor (name, publisher) {\n /**\n * A name of the event.\n *\n * @type {string}\n */\n this.name = name\n\n /**\n * A name of the publisher.\n *\n * @type {string}\n */\n this.publisher = publisher.name\n\n /**\n * A subscribers that listens to the published event.\n *\n * @type {Map} - A map of subscriber's functions\n */\n this._subscribers = new Map()\n }\n\n /**\n * This function is called when an event is published.\n *\n * @callback EventSubscriber\n * @param {object} data - An event-specific data associated with the event.\n * @param {PsEventData} eventData - A data about the event being published.\n * PsEvent data allows generic subscribers (i.e. functions that are subscribed to\n * more than one event) to distinguish between an event being published.\n */\n\n /**\n * Return a list of subscribers for the current event.\n *\n * @returns {EventSubscriber[]} An array of event subscriber functions.\n */\n get subscribers () {\n return Array.from(this._subscribers.values())\n }\n\n /**\n * Subscribes a function to the published event.\n * When event is published, a @type {Event~subscriber} function is called.\n *\n * @param {EventSubscriber} subscriber - A subscriber function.\n * @returns {Function} - An function that, when called, will unsubscribe the current subscriber from an event.\n */\n sub (subscriber) {\n const subId = uuidv4()\n this._subscribers.set(subId, subscriber)\n return () => {\n this._subscribers.delete(subId)\n }\n }\n\n /**\n * Publishes an event with data related to it. All subscribers will receive an\n * event notification along with event data.\n *\n * @param {object} [data={}] - An event-specific data associated with the event.\n * @param {string} [caller=''] - The name of the function that called `pub`.\n */\n pub (data = {}, caller = '') {\n this._subscribers.forEach(l => l(data, new PsEventData(this, caller)))\n }\n\n /**\n * Unsubscribes all subscribers from an event.\n */\n unsubAll () {\n this._subscribers.clear()\n }\n}\n","/**\n * An abstraction of an Alpheios resource provider\n */\nclass ResourceProvider {\n /**\n * @param {string} uri - a unique resource identifier for this provider\n * @param {string} rights - rights text\n * @param {Map} rightsTranslations - optional map of translated rights text - keys should be language of text, values the text\n */\n constructor (uri = '', rights = '', rightsTranslations = new Map([['default', rights]])) {\n this.uri = uri\n this.rights = rightsTranslations\n if (!this.rights.has('default')) {\n this.rights.set('default', rights)\n }\n }\n\n /**\n * @returns a string representation of the resource provider, in the default language\n */\n toString () {\n return this.rights.get('default')\n }\n\n /**\n * Produce a string representation of the resource provider, in the requested locale if available\n *\n * @param {string} languageCode\n * @returns a string representation of the resource provider, in the requested locale if available\n */\n toLocaleString (languageCode) {\n return this.rights.get(languageCode) || this.rights.get('default')\n }\n\n static getProxy (provider = null, target = {}) {\n return new Proxy(target, {\n get: function (target, name) {\n return name === 'provider' ? provider : target[name]\n }\n })\n }\n\n convertToJSONObject () {\n let rights = {} // eslint-disable-line prefer-const\n for (const [key, value] of this.rights.entries()) {\n rights[key] = value\n }\n\n const resultProvider = {\n uri: this.uri,\n rights\n }\n return resultProvider\n }\n\n static readObject (jsonObject) {\n const rights = new Map() // eslint-disable-line prefer-const\n if (jsonObject.rights) {\n Object.keys(jsonObject.rights).forEach(key => {\n rights.set(key, jsonObject.rights[key])\n })\n }\n\n return new ResourceProvider(jsonObject.uri, '', rights)\n }\n}\n\nexport default ResourceProvider\n","import Logger from '../logging/logger.js'\n\nexport default class DefaultsLoader {\n static fromJSON (jsonString) {\n try {\n return JSON.parse(jsonString)\n } catch (err) {\n Logger.getInstance().error('Unable to parse Alpheios JSON options string:', err)\n return {}\n }\n }\n}\n","/* global browser */\nimport StorageAdapter from './storage-adapter.js'\n\n/**\n * An implementation of a StorageAdapter interface for an extension synchronized storage.\n */\nexport default class ExtensionSyncStorage extends StorageAdapter {\n /**\n * A wrapper around a `browser.storage.sync.set()` of webextension.\n * It allows to store one or several key-value pairs to local storage.\n *\n * @param {object} keysObject - An object containing one or more key/value pairs to be stored in storage.\n * If a particular item already exists, its value will be updated.\n * @returns {Promise} - A promise that is resolved with with a void value if all key/value pairs are stored\n * successfully. If at least on save operation fails, returns a rejected promise with an error information.\n */\n set (keysObject) {\n return browser.storage.sync.set(keysObject)\n }\n\n /**\n * A wrapper around a `browser.storage.sync.get()` of webextension. It retrieves one or several values from\n * local storage.\n *\n * @param {string | Array | object | null | undefined } keys - A key (string)\n * or keys (an array of strings or an object) to identify the item(s) to be retrieved from storage.\n * If you pass an empty string, object or array here, an empty object will be retrieved. If you pass null,\n * or an undefined value, the entire storage contents will be retrieved.\n * @returns {Promise} A Promise that will be fulfilled with a results object containing key-value pairs\n * found in the storage area. If this operation failed, the promise will be rejected with an error message.\n */\n get (keys = undefined) {\n return browser.storage.sync.get(keys)\n }\n\n clearAll () {\n return browser.storage.sync.clear()\n }\n}\n","import StorageAdapter from './storage-adapter.js'\n\n/**\n * An implementation of a StorageAdapter interface for a local storage.\n */\nexport default class LocalStorageArea extends StorageAdapter {\n /**\n * A wrapper around a local storage `setItem()` function.\n * It allows to store one or several key-value pairs to local storage.\n *\n * @param {object} keysObject - An object containing one or more key/value pairs to be stored in storage.\n * If a particular item already exists, its value will be updated.\n * @returns {Promise} - A promise that is resolved with with a void value if all key/value pairs are stored\n * successfully. If at least on save operation fails, returns a rejected promise with an error information.\n */\n set (keysObject) {\n return new Promise((resolve, reject) => {\n try {\n let keys = window.localStorage.getItem(`${this.domain}-keys`)\n if (keys) {\n keys = JSON.parse(keys)\n } else {\n keys = [] // No keys in storage yet\n }\n for (const [key, value] of Object.entries(keysObject)) {\n window.localStorage.setItem(key, value)\n if (!keys.includes(key)) {\n keys.push(key)\n }\n }\n // Save a list of keys to the local storage\n window.localStorage.setItem(`${this.domain}-keys`, JSON.stringify(keys))\n } catch (e) {\n reject(e)\n }\n resolve()\n })\n }\n\n /**\n * A wrapper around a local storage `removeItem()` function.\n * It allows to remove one key-value pair from the local storage.\n *\n * @param {string} key - a key of the item to be removed.\n * If a pair with the key specified exists, it will be removed.\n * @returns {Promise} - A promise that is resolved with with `true` if a key-value pair was removed\n * successfully. If the pair for removal is not in the storage, a promise is resolved with the `null` value.\n * If a removal operation fails for any reason, a promise is rejected with the error.\n */\n remove (key) {\n return new Promise((resolve, reject) => {\n try {\n if (key) {\n let keys = window.localStorage.getItem(`${this.domain}-keys`)\n if (keys) {\n keys = JSON.parse(keys)\n\n const index = keys.indexOf(key)\n if (index !== -1) { keys.splice(index, 1) }\n\n window.localStorage.setItem(`${this.domain}-keys`, JSON.stringify(keys))\n window.localStorage.removeItem(key)\n // the key-value pair was removed successfully, resolving with `true`\n resolve(true)\n } else {\n // Nothing to retrieve, resolve promise with `null`\n resolve(null)\n }\n }\n } catch (e) {\n reject(e)\n }\n })\n }\n\n /**\n * A wrapper around a local storage `getItem()` function. It retrieves one or several values from\n * local storage.\n *\n * @param {string | Array | object | null | undefined } keys - A key (string)\n * or keys (an array of strings or an object) to identify the item(s) to be retrieved from storage.\n * If you pass an empty string, object or array here, an empty object will be retrieved. If you pass null,\n * or an undefined value, the entire storage contents will be retrieved.\n * @returns {Promise} A Promise that will be fulfilled with a results object containing key-value pairs\n * found in the storage area. If this operation failed, the promise will be rejected with an error message.\n */\n get (keys = undefined) {\n return new Promise((resolve, reject) => {\n try {\n if (!keys) {\n keys = []\n } else if (Array.isArray(keys) && keys.length === 0) {\n keys = []\n } else if (typeof keys === 'string') {\n keys = [keys]\n } else if (typeof keys === 'object') {\n keys = Object.keys(keys)\n } else {\n keys = []\n }\n\n let result = {} // eslint-disable-line prefer-const\n if (keys.length === 0) {\n // If no keys specified, will retrieve all values\n keys = window.localStorage.getItem(`${this.domain}-keys`)\n if (keys) {\n keys = JSON.parse(keys)\n } else {\n // Nothing to retrieve\n resolve(result)\n }\n }\n\n for (const key of keys) {\n result[key] = window.localStorage.getItem(key)\n }\n\n resolve(result)\n } catch (e) {\n reject(e)\n }\n })\n }\n\n clearAll () {\n return new Promise((resolve, reject) => {\n try {\n let result = null // eslint-disable-line prefer-const\n let keys = window.localStorage.getItem(`${this.domain}-keys`)\n if (keys) {\n keys = JSON.parse(keys)\n for (const key of keys) {\n window.localStorage.removeItem(key)\n }\n window.localStorage.setItem(`${this.domain}-keys`, JSON.stringify([]))\n resolve(true)\n } else {\n // Nothing to retrieve\n resolve(result)\n }\n } catch (e) {\n reject(e)\n }\n })\n }\n}\n","import StorageAdapter from './storage-adapter.js'\nimport axios from 'axios'\n\n/**\n * An implementation of the StorageAdapterinterface that retrieves\n * data from an authentication-protected remote service implementing\n * the Alpheios user-settings-api.\n *\n * @param {string} domain a string identifying the storage domain\n * @param {object} auth athentication details object adhering to:\n * { endpoints: {settings: reject(new Error('Set method should be implemented in a subclass')))\n }\n\n /**\n * Retrieves one or several values from local storage.\n *\n * @param {string | Array | object | null | undefined } keys - A key (string)\n * or keys (an array of strings or an object) to identify the item(s) to be retrieved from storage.\n * If you pass an empty string, object or array here, an empty object will be retrieved. If you pass null,\n * or an undefined value, the entire storage contents will be retrieved.\n * @returns {Promise} A Promise that will be fulfilled with a results object containing key-value pairs\n * found in the storage area. If this operation failed, the promise will be rejected with an error message.\n */\n get (keys) {\n return new Promise((resolve, reject) => reject(new Error('Get method should be implemented in a subclass')))\n }\n\n /**\n * A wrapper around a local storage `removeItem()` function.\n * It allows to remove one key-value pair from local storage.\n *\n * @param {string} key - key of the item to be removed.\n * If a particular item exists, it will be removed.\n * @returns {Promise} - A promise that is resolved with with true if a key was removed\n * successfully. If at least on save operation fails, returns a rejected promise with an error information.\n */\n remove (key) {\n return new Promise((resolve, reject) => reject(new Error('Remove method should be implemented in a subclass')))\n }\n\n /**\n * clear all items in the storage\n */\n clearAll () {\n return new Promise((resolve, reject) => reject(new Error('clearAll method should be implemented in a subclass')))\n }\n}\n","import StorageAdapter from './storage-adapter.js'\n\n/**\n * An implementation of a StorageAdapter interface for temporary storage\n */\nexport default class TempStorageArea extends StorageAdapter {\n /**\n * A wrapper around a local storage `setItem()` function.\n * It allows to store one or several key-value pairs to local storage.\n *\n * @param {object} keysObject - An object containing one or more key/value pairs to be stored in storage.\n * If a particular item already exists, its value will be updated.\n * @returns {Promise} - A promise that is resolved with with a void value if all key/value pairs are stored\n * successfully. If at least on save operation fails, returns a rejected promise with an error information.\n */\n set (keysObject) {\n return new Promise((resolve) => { resolve('TempStorageArea does not store any values permanently') })\n }\n\n /**\n * A wrapper around a local storage `getItem()` function. It retrieves one or several values from\n * local storage.\n *\n * @param {string | Array | object | null | undefined } keys - A key (string)\n * or keys (an array of strings or an object) to identify the item(s) to be retrieved from storage.\n * If you pass an empty string, object or array here, an empty object will be retrieved. If you pass null,\n * or an undefined value, the entire storage contents will be retrieved.\n * @returns {Promise} A Promise that will be fulfilled with a results object containing key-value pairs\n * found in the storage area. If this operation failed, the promise will be rejected with an error message.\n */\n get (keys = undefined) {\n return new Promise((resolve) => { resolve('TempStorageArea does not have any stored values') })\n }\n}\n","import LanguageModel from './language_model.js'\nimport Feature from './feature.js'\nimport * as Constants from './constants.js'\nimport InflectionGroupingKey from './inflection_grouping_key'\nimport InflectionGroup from './inflection_group'\n\nconst typeFeatures = new Map()\nlet typeFeaturesInitialized = false\n\n/**\n * @class GezLanguageModel is the lass for Ge'ez specific behavior\n */\nexport default class SyriacLanguageModel extends LanguageModel {\n static get languageID () { return Constants.LANG_SYRIAC }\n\n static get languageCode () { return Constants.STR_LANG_CODE_SYR }\n\n static get languageCodes () { return [Constants.STR_LANG_CODE_SYR, Constants.STR_LANG_CODE_SYC, Constants.STR_LANG_CODE_SYR_SYRJ] }\n\n static get contextForward () { return 0 }\n\n static get contextBackward () { return 0 }\n\n static get direction () { return Constants.LANG_DIR_RTL }\n\n static get baseUnit () { return Constants.LANG_UNIT_WORD }\n static get featureValues () {\n return new Map([\n ...LanguageModel.featureValues,\n [\n Feature.types.part,\n [\n Constants.POFS_ADVERB,\n Constants.POFS_ADVERBIAL,\n Constants.POFS_ADJECTIVE,\n Constants.POFS_ARTICLE,\n Constants.POFS_CONJUNCTION,\n Constants.POFS_EXCLAMATION,\n Constants.POFS_INTERJECTION,\n Constants.POFS_NOUN,\n Constants.POFS_NUMERAL,\n Constants.POFS_PARTICLE,\n Constants.POFS_PREFIX,\n Constants.POFS_PREPOSITION,\n Constants.POFS_PRONOUN,\n Constants.POFS_SUFFIX,\n Constants.POFS_SUPINE,\n Constants.POFS_VERB,\n Constants.POFS_VERB_PARTICIPLE,\n Constants.POFS_DENOMINATIVE\n ]\n ],\n [\n Feature.types.kaylo,\n []\n ],\n [\n Feature.types.state,\n []\n ]\n ])\n }\n\n static get typeFeatures () {\n if (!typeFeaturesInitialized) { this.initTypeFeatures() }\n return typeFeatures\n }\n\n static initTypeFeatures () {\n for (const featureName of this.featureNames) {\n typeFeatures.set(featureName, this.getFeature(featureName))\n }\n typeFeaturesInitialized = true\n }\n\n /**\n * Check to see if this language tool can produce an inflection table display\nfor the current node\n *\n * @param node\n */\n static canInflect (node) {\n return false\n }\n\n /**\n * Get a list of valid punctuation for this language\n * Taken from the list at https://en.wikipedia.org/wiki/Syriac_(Unicode_block)\n *\n * @returns {string} a string containing valid punctuation symbols\n */\n static getPunctuation () {\n return \"\\u0700\\u0701\\u0702\\u0703\\u0704\\u0705\\u0706\\u0707\\u0708\\u0709\\u070A\\u070B\\u070C\\u070D\\u070F.,;:!?'\\\"(){}\\\\[\\\\]<>/\\\\\\u00A0\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2018\\u2019\\u2020\\u2021\\u201C\\u201D\\n\\r\\u200C\\u200D\"\n }\n\n /**\n * Groups a set of inflections according to a syriac display paradigm\n The default groups according to the following logic:\n 1. groups of groups with unique stem, prefix, suffix, part of speech, declension, kaylo or state, and comparison\n 2. groups of those groups with unique\n number, if it's an inflection with a grammatical case\n tense, if it's an inflection with tense but no case (i.e. a verb)\n verbs without tense or case\n adverbs\n everything else\n 3. groups of those groups with unique voice and tense\n 4. groups of inflections with unique gender, person, mood, and sort\n *\n * @param inflections\n */\n static groupInflectionsForDisplay (inflections) {\n const grouped = new Map()\n const aggregated = this.aggregateInflectionsForDisplay(inflections)\n\n // group inflections by part of speech\n for (const infl of aggregated) {\n const groupingKey = new InflectionGroupingKey(infl,\n [Feature.types.part, Feature.types.declension, Feature.types.kaylo, Feature.types.state, Feature.types.comparison],\n {\n prefix: infl.prefix,\n suffix: infl.suffix,\n stem: infl.stem\n }\n )\n const groupingKeyStr = groupingKey.toString()\n if (grouped.has(groupingKeyStr)) {\n grouped.get(groupingKeyStr).append(infl)\n } else {\n grouped.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n\n // iterate through each group key to group the inflections in that group\n for (const kv of grouped) {\n const inflgrp = new Map()\n for (const infl of kv[1].inflections) {\n let keyprop\n let isCaseInflectionSet = false\n if (infl[Feature.types.grmCase]) {\n // grouping on number if case is defined\n keyprop = Feature.types.number\n isCaseInflectionSet = true\n } else if (infl[Feature.types.tense]) {\n // grouping on tense if tense is defined but not case\n keyprop = Feature.types.tense\n } else if (infl[Feature.types.part] === Constants.POFS_VERB) {\n // grouping on no case or tense but a verb\n keyprop = Feature.types.part\n } else if (infl[Feature.types.part] === Constants.POFS_ADVERB) {\n keyprop = Feature.types.part\n // grouping on adverbs without case or tense\n } else {\n keyprop = 'misc'\n // grouping on adverbs without case or tense\n // everything else\n }\n const groupingKey = new InflectionGroupingKey(infl, [keyprop], { isCaseInflectionSet: isCaseInflectionSet })\n const groupingKeyStr = groupingKey.toString()\n if (inflgrp.has(groupingKeyStr)) {\n inflgrp.get(groupingKeyStr).append(infl)\n } else {\n inflgrp.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n // inflgrp is now a map of groups of inflections grouped by\n // inflections with number\n // inflections without number but with tense\n // inflections of verbs without tense\n // inflections of adverbs\n // everything else\n // iterate through each inflection group key to group the inflections in that group by tense and voice\n for (const kv of inflgrp) {\n const nextGroup = new Map()\n const sortOrder = new Map()\n for (const infl of kv[1].inflections) {\n const sortkey = infl[Feature.types.grmCase] ? Math.max(infl[Feature.types.grmCase].items.map(f => f.sortOrder)) : 1\n const groupingKey = new InflectionGroupingKey(infl, [Feature.types.tense, Feature.types.voice])\n const groupingKeyStr = groupingKey.toString()\n if (nextGroup.has(groupingKeyStr)) {\n nextGroup.get(groupingKeyStr).append(infl)\n } else {\n nextGroup.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl], sortkey))\n sortOrder.set(groupingKeyStr, sortkey)\n }\n }\n kv[1].inflections = []\n const sortedKeys = Array.from(nextGroup.keys()).sort(\n (a, b) => {\n const orderA = sortOrder.get(a)\n const orderB = sortOrder.get(b)\n return orderA > orderB ? -1 : orderB > orderA ? 1 : 0\n }\n )\n for (const groupkey of sortedKeys) {\n kv[1].inflections.push(nextGroup.get(groupkey))\n }\n }\n\n // inflgrp is now a Map of groups of groups of inflections\n\n for (const kv of inflgrp) {\n const groups = kv[1]\n for (const group of groups.inflections) {\n const nextGroup = new Map()\n for (const infl of group.inflections) {\n // set key is case comp gend pers mood sort\n const groupingKey = new InflectionGroupingKey(infl,\n [Feature.types.grmCase, Feature.types.comparison, Feature.types.gender, Feature.types.number, Feature.types.person,\n Feature.types.tense, Feature.types.mood, Feature.types.voice])\n const groupingKeyStr = groupingKey.toString()\n if (nextGroup.has(groupingKeyStr)) {\n nextGroup.get(groupingKeyStr).append(infl)\n } else {\n nextGroup.set(groupingKeyStr, new InflectionGroup(groupingKey, [infl]))\n }\n }\n group.inflections = Array.from(nextGroup.values()) // now a group of inflection groups\n }\n }\n kv[1].inflections = Array.from(inflgrp.values())\n }\n return Array.from(grouped.values())\n }\n}\n","class Author {\n /**\n * Constructor, extracts ID from urn\n *\n * @param {string} urn - string identificator in special format, for example 'urn:cts:latinLit:phi0959'\n * @param {object} titles - has the following format { languageCode: title }\n * @param {object} abbreviations - has the following format { languageCode: abbreviation }\n * @returns {Author}\n */\n constructor (urn, titles, abbreviations) {\n this.urn = urn\n this.titles = titles\n this.abbreviations = abbreviations\n }\n\n /**\n * This property is used to define title for panel\n *\n * @returns {string}\n */\n static get defaultLang () {\n return 'eng'\n }\n\n /**\n * Method returns title in the lang from arguments, otherwise in default language or (if not exists) it returns first available title\n *\n * @param {string} lang - language for getting title\n * @returns {string}\n */\n title (lang) {\n if (this.titles[lang]) {\n return this.titles[lang]\n } else if (this.titles[Author.defaultLang]) {\n return this.titles[Author.defaultLang]\n } else if (Object.values(this.titles).length > 0) {\n return Object.values(this.titles)[0]\n }\n return null\n }\n\n /**\n * Method returns abbreviation in the lang from arguments, otherwise in default language or (if not exists) it returns first available abbreviation\n *\n * @param {string} lang - language for getting abbreviation\n * @returns {string}\n */\n abbreviation (lang) {\n if (this.abbreviations[lang]) {\n return this.abbreviations[lang]\n } else if (this.abbreviations[Author.defaultLang]) {\n return this.abbreviations[Author.defaultLang]\n } else if (Object.values(this.abbreviations).length > 0) {\n return Object.values(this.abbreviations)[0]\n }\n return null\n }\n}\n\nexport default Author\n","class TextWork {\n /**\n * Constructor, extracts ID from urn\n *\n * @param {Author} author - author of the textWork\n * @param {string} urn - string identificator in special format, for example 'urn:cts:latinLit:phi0959'\n * @param {object} titles - has the following format { languageCode: title }\n * @param {object} abbreviations - has the following format { languageCode: abbreviation }\n * @returns {TextWork}\n */\n constructor (author, urn, titles, abbreviations) {\n this.urn = urn\n this.titles = titles\n this.author = author\n this.abbreviations = abbreviations\n }\n\n /**\n * This property is used to define title for panel\n *\n * @returns {string}\n */\n static get defaultLang () {\n return 'eng'\n }\n\n /**\n * This property is used to define prefix fr extract ID\n *\n * @returns {string}\n */\n static get defaultIDPrefix () {\n return 'phi'\n }\n\n /**\n * Method returns title in the lang from arguments, otherwise in default language or (if not exists) it returns first available title\n *\n * @param {string} lang - language for getting title\n * @returns {string}\n */\n title (lang) {\n if (this.titles[lang]) {\n return this.titles[lang]\n } else if (this.titles[TextWork.defaultLang]) {\n return this.titles[TextWork.defaultLang]\n } else if (Object.values(this.titles).length > 0) {\n return Object.values(this.titles)[0]\n }\n return null\n }\n\n /**\n * Method returns abbreviation in the lang from arguments, otherwise in default language or (if not exists) it returns first available abbreviation\n *\n * @param {string} lang - language for getting abbreviation\n * @returns {string}\n */\n abbreviation (lang) {\n if (this.abbreviations[lang]) {\n return this.abbreviations[lang]\n } else if (this.abbreviations[TextWork.defaultLang]) {\n return this.abbreviations[TextWork.defaultLang]\n } else if (Object.values(this.abbreviations).length > 0) {\n return Object.values(this.abbreviations)[0]\n }\n return null\n }\n}\n\nexport default TextWork\n","import TextQuoteSelector from '../w3c/text-quote-selector.js'\nimport LanguageModelFactory from '../language_model_factory.js'\n\nexport default class WordUsageExample extends TextQuoteSelector {\n constructor (language, targetWord, prefix, suffix, source, cit) {\n super(language, targetWord)\n this.prefix = prefix\n this.suffix = suffix\n this.source = source\n this.cit = cit\n this.author = null\n this.textWork = null\n this.passage = null\n }\n\n createContext () {\n return null // not implemented in the current child-class\n }\n\n /**\n * Creates a full text of example prefix + word + suffix\n *\n * @returns {string}\n */\n get htmlExample () {\n return `${this.prefix}${this.normalizedText}${this.suffix}`\n }\n\n /**\n * Creates a full description - author + textWork + cit number\n *\n * @param {string} lang - language for getting text\n * @returns {string}\n */\n fullCit (lang) {\n if (!this.author && !this.textWork && !this.passage) {\n return this.cit\n }\n let finalFullCit = ''\n if (!lang) {\n finalFullCit = this.formattedAuthor + ' ' + this.formattedTextWork + ' ' + this.formattedPassage\n } else {\n finalFullCit = this.author ? this.author.title(lang) : '.'\n finalFullCit = finalFullCit + ' ' + (this.textWork ? this.textWork.title(lang) : '.')\n finalFullCit = finalFullCit + ' ' + this.formattedPassage\n }\n\n return finalFullCit.trim()\n }\n\n get formattedAuthor () {\n return this.author ? this.author.title() : ''\n }\n\n get formattedTextWork () {\n return this.textWork ? this.textWork.title() : ''\n }\n\n get formattedPassage () {\n return this.passage\n }\n\n authorForSort (lang) {\n if (this.author) {\n return this.author.title(lang).toUpperCase()\n } else {\n return this.fullCit(lang).toUpperCase()\n }\n }\n\n textWorkForSort (lang) {\n if (this.textWork) {\n return this.textWork.title(lang).toUpperCase()\n } else {\n return this.fullCit(lang).toUpperCase()\n }\n }\n\n get prefixForSort () {\n const model = LanguageModelFactory.getLanguageModelFromCode(this.languageCode)\n const clearPrefix = this.prefix.replace(new RegExp('[' + model.getPunctuation() + ' ]', 'g'), ' ').toUpperCase().split(' ').filter(item => item.length > 0)\n return clearPrefix[clearPrefix.length - 1]\n }\n\n get suffixForSort () {\n const model = LanguageModelFactory.getLanguageModelFromCode(this.languageCode)\n return this.suffix.replace(new RegExp('[' + model.getPunctuation() + ' ]', 'g'), '').toUpperCase()\n }\n}\n","import ResourceProvider from './resource_provider.js'\n/**\n * stores a scope of lemma translations from python service\n * Contains a primary Lemma object\n */\nclass Translation {\n /**\n * Initializes a Translation object.\n *\n * @param {Lemma} lemma - A lemma object.\n * @param languageCode\n * @param translations\n */\n constructor (lemma, languageCode, translations = []) {\n if (!lemma) {\n throw new Error('Lemma should not be empty.')\n }\n this.lemmaWord = lemma.word\n this.languageCode = languageCode\n this.glosses = translations\n }\n\n static readTranslationFromJSONList (lemma, languageCode, translationsList, provider) {\n if (!translationsList || !Array.isArray(translationsList)) {\n throw new Error('Recieved not proper translation list', translationsList)\n }\n const curTranslations = translationsList.find(function (element) { return element.in === lemma.word })\n const translation = new Translation(lemma, languageCode, curTranslations.translations)\n if (provider) {\n return ResourceProvider.getProxy(provider, translation)\n } else {\n return translation\n }\n }\n\n static loadTranslations (lemma, languageCode, translationsList, provider) {\n lemma.addTranslation(this.readTranslationFromJSONList(lemma, languageCode, translationsList, provider))\n }\n\n convertToJSONObject () {\n // eslint-disable-next-line prefer-const\n let result = {\n languageCode: this.languageCode,\n translations: this.glosses\n }\n\n if (this.provider) {\n result.provider = this.provider.convertToJSONObject()\n }\n return result\n }\n\n static readObject (jsonObject, lemma) {\n const translation = new Translation(lemma, jsonObject.languageCode, jsonObject.translations)\n if (jsonObject.provider) {\n const provider = ResourceProvider.readObject(jsonObject.provider)\n return ResourceProvider.getProxy(provider, translation)\n } else {\n return translation\n }\n }\n}\nexport default Translation\n","export default class TreebankDataItem {\n /**\n * Creates a treebank item. It can be created for either a specific text element (i.e. a selected word)\n * or for the document (a web page) that has treebank data.\n * If it is created for a text element, an 'elem' parameter will be provided and it will contain\n * a selected text element.\n * If a treebank item is created for a document (as when a web page with treebank data in it is loaded\n * but a specific word is not selected) an 'elem' parameter will be skipped. In that case constructor\n * will scan document in a search of any document ID and sentence ID that are required to be in a URL\n * to load a treebank diagram.\n *\n * @param {node} [elem=null] - An HTML node that contains a selected word (optional).\n */\n constructor (elem = null) {\n this.version = 0\n this.app = null\n this.sourceUrl = null\n this.wordIds = []\n this.sentenceId = null\n this.doc = null\n // Although not the normal scenario, a treebank data file may contain only\n // morphological data and not syntactic relationships. In this case\n // the page author can suppress the display of the tree but still allow the\n // morphological data to be used for disambigutation\n this.suppressTree = false\n /*\n Treebank data on a page must have an element with the following obligatory data attributes:\n data-alpheios_tb_app - the only app currently supported is 'perseids-treebank-template'\n data-alpheios_tb_app_version - a version of a data format (the latest version is 1);\n data-alpheios_tb_app_url - a schema of a treebank template URL;\n data-alpheios_tb_ref - a reference that will be used to load data into the iframe initially\n\n The following attributes are data attributes are optional:\n data-alpheios_morph_only - if set to anything other than \"false\" the tree display will be suppressed\n and data used for morphological disambigutation only\n Example:\n data-alpheios_tb_app=\"perseids-treebank-template\"\n data-alpheios_tb_app_version=\"1\"\n data-alpheios_tb_app_url=\"https://alpheios-project.github.io/treebank-template/embed/DOC/SENTENCE?w=WORD\"\n data-alpheios_tb_ref=\"on-the-murder-of-eratosthenes-1-50#1-1\"\n\n HTML elements that are surrounding words must have a `data-alpheios_tb_ref` ref attribute.\n It will tie a word to its position in a tree.\n */\n const tbSrcElem = elem\n ? elem.closest('[data-alpheios_tb_app]')\n : document.querySelector('[data-alpheios_tb_app]')\n if (tbSrcElem) {\n this.app = tbSrcElem.dataset.alpheios_tb_app\n if (this.app !== 'perseids-treebank-template') {\n throw new Error('Unsupported treebank application. This version of Alpheios only supports the perseids-treebank-template viewer app.')\n }\n if (tbSrcElem.dataset.alpheios_tb_app_version) {\n this.version = Number.parseInt(tbSrcElem.dataset.alpheios_tb_app_version, 10)\n if (!Number.isInteger(this.version)) { throw new Error(`Treebank version is incorrect in: ${tbSrcElem.outerHTML}`) }\n }\n\n if (!tbSrcElem.dataset.alpheios_tb_app_url) { throw new Error(`Missing treebank source URL in: ${tbSrcElem.outerHTML}`) }\n this.sourceUrl = tbSrcElem.dataset.alpheios_tb_app_url\n\n if (tbSrcElem.dataset.alpheios_tb_morph_only) {\n // any value other than false activates this flag\n this.suppressTree = Boolean(tbSrcElem.dataset.alpheios_tb_morph_only !== 'false')\n }\n\n // We'll search for any element with the treebank tags if `elem` is not provided.\n const tbRefElem = elem ? elem.closest('[data-alpheios_tb_ref]') : document.querySelector('[data-alpheios_tb_ref]')\n // If TreebankDataItem is created for a page (i.e. `elem` is not provided) we need just a sentence ID, not word ID\n let wordElem = null\n let sentElem\n if (elem) {\n // TreebankDataItem is created for a text element\n wordElem = elem.closest('[data-alpheios_tb_word]')\n sentElem = wordElem ? wordElem.closest('[data-alpheios_tb_sent]') : elem.closest('[data-alpheios_tb_sent]')\n } else {\n // TreebankDataItem is created for a page, we don't need a word ID\n sentElem = document.querySelector('[data-alpheios_tb_sent]')\n }\n if (!tbRefElem && !(wordElem || sentElem)) {\n throw new Error('An element does not have data-alpheios_tb_ref, data-alpheios_tb_word or data-alpheios_tb_sent attributes')\n }\n\n /*\n If both `data-alpheios_tb_word` and `data-alpheios_tb_ref` data attributes are present, the former will\n have priority because it belongs to a newer tagging schema.\n */\n if (wordElem || sentElem) {\n /*\n Data is using `data-alpheios_tb_sent` and `data-alpheios_tb_word` attributes. There could be multiple\n word combinations specified there. In that case they will be separated by spaces:\n `data-alpheios_tb_word=\"3 4\"`.\n */\n if (!sentElem) {\n throw new Error('Sentence ID is undefined: there is no parent element with data-alpheios_tb_sent attribute')\n }\n const docElem = wordElem ? wordElem.closest('[data-alpheios_tb_doc]') : sentElem.closest('[data-alpheios_tb_doc]')\n if (!docElem) {\n throw new Error('Document ID is undefined: there is no parent element with data-alpheios_tb_doc attribute')\n }\n if (wordElem) {\n this.wordIds = wordElem.dataset.alpheios_tb_word.split(' ')\n }\n this.sentenceId = sentElem.dataset.alpheios_tb_sent\n this.doc = docElem.dataset.alpheios_tb_doc\n } else {\n /*\n Data is using `data-alpheios_tb_ref` attributes. There could be multiple\n sentence and word combinations specified there. In that case they will be separated by spaces:\n `data-alpheios_tb_ref=\"phi0959.phi006.alpheios-text-lat1#2-13 phi0959.phi006.alpheios-text-lat1#2-14\"`.\n We, however, do not support multiple references with different sentence ID. In that case the first\n reference will be used and others with sentence IDs not matching the first one will be ignored.\n */\n const reference = tbRefElem.dataset.alpheios_tb_ref\n let refs\n try {\n refs = reference.split(' ').map(ref => TreebankDataItem.parseReference(ref))\n } catch (err) {\n throw new Error(`${err.message} in: ${tbSrcElem.outerHTML}`)\n }\n refs = refs.filter(i => i.doc === refs[0].doc && i.sent === refs[0].sent)\n this.doc = refs[0].doc\n this.sentenceId = refs[0].sent\n this.wordIds = refs.map(i => i.word)\n }\n }\n\n if (!this.doc) { throw new Error('Document data is missing') }\n if (!this.sentenceId) { throw new Error('Sentence data is missing') }\n }\n\n static getTreebankData (elem = null) {\n try {\n return new TreebankDataItem(elem)\n } catch (err) {\n return null\n }\n }\n\n /**\n * Parse a reference in a \"phi0959.phi006.alpheios-text-lat1#2-13\" format to document, sentence ID, and word ID.\n *\n * @param {string} reference - A reference value to parse.\n * @returns {{doc: string, sent: string, word: string}} - An object containing parsed values.\n */\n static parseReference (reference) {\n const [doc, sentWordRef] = reference.split(/#/)\n if (!doc || !sentWordRef) { throw new Error('Invalid treebank reference') }\n const [sent, word] = sentWordRef.split(/-/)\n if (!sent) { throw new Error('Invalid treebank sent ID') }\n if (!word) { throw new Error('Invalid treebank word ID') }\n return { doc, sent, word }\n }\n\n setWordData (wordIds) {\n this.wordIds = wordIds\n }\n\n removeWordData () {\n this.wordIds = []\n }\n\n get fullUrl () {\n return this.sourceUrl.replace('DOC', this.doc).replace('SENTENCE', this.sentenceId)\n }\n\n get docUrl () {\n return this.sourceUrl.replace('DOC', this.doc)\n }\n\n get provider () {\n return new URL(this.fullUrl).origin\n }\n\n get hasWordData () {\n return this.wordIds.length > 0\n }\n\n get hasSentenceData () {\n return Boolean(this.sentenceId)\n }\n}\n","/**\n * Implements a W3C Text Quote Selector (https://www.w3.org/TR/annotation-model/#h-text-quote-selector)\n */\nimport { v4 as uuidv4 } from 'uuid'\n\nexport default class TextQuoteSelector {\n constructor (languageCode, normalizedText, prefix = null, suffix = null, source = null) {\n this.languageCode = languageCode\n this.normalizedText = normalizedText\n this.contextForward = 6\n this.contextBackward = 6\n this.text = this.normalizedText\n this.prefix = prefix\n this.suffix = suffix\n this.source = source\n this.ID = uuidv4()\n }\n\n get contextHTML () {\n const templateWord = `${this.text}`\n const checkPrefix = this.prefix.replace(this.text, templateWord)\n const checkSuffix = this.suffix.replace(this.text, templateWord)\n\n const fullText = `${checkPrefix} ${this.text} ${checkSuffix}`\n return fullText\n }\n\n static readObject (jsonObject) {\n // eslint-disable-next-line prefer-const\n let tq = new TextQuoteSelector(jsonObject.languageCode, jsonObject.target.selector.exact)\n tq.prefix = jsonObject.target.selector.prefix\n tq.suffix = jsonObject.target.selector.suffix\n tq.text = jsonObject.targetWord\n tq.source = jsonObject.target.source\n return tq\n }\n\n isEqual (otherTqs) {\n let checkContextThis = `${this.prefix}${this.text}${this.suffix}`\n checkContextThis = checkContextThis.trim()\n\n let checkContextOther = `${otherTqs.prefix}${otherTqs.text}${otherTqs.suffix}`\n checkContextOther = checkContextOther.trim()\n\n return this.text === otherTqs.text &&\n this.source === otherTqs.source &&\n this.languageCode === otherTqs.languageCode &&\n checkContextThis === checkContextOther\n }\n}\n","import Homonym from './homonym.js'\nimport TextQuoteSelector from './w3c/text-quote-selector.js'\n\nexport default class WordItem {\n /**\n * @class\n * @param data\n * {String} targetWord\n * {String} languageCode\n * {Boolean} important\n * {Boolean} currentSession\n * {TextQuoteSelector[]} context\n * {Homonym} homonym\n */\n constructor (data = { targetWord: null, languageCode: null, important: false, currentSession: true, context: [], homonym: {}, createdDT: null, updatedDT: null, frequency: null }) {\n // TODO handling of version\n this.version = 1\n this.targetWord = data.targetWord\n this.languageCode = data.languageCode\n if (!this.targetWord || !this.languageCode) {\n throw new Error('Unable to construct a worditem without at least a targetWord and a languageCode')\n }\n this.important = data.important === undefined ? false : data.important\n this.currentSession = data.currentSession === undefined ? true : data.currentSession\n this.context = data.context || []\n this.homonym = data.homonym || {}\n\n this.createdDT = data.createdDT\n this.updatedDT = data.updatedDT\n this.frequency = data.frequency\n }\n\n /**\n * Construct a WordItem from JSON\n *\n * @param jsonObject\n */\n static readObject (jsonObject) {\n let homonym = {}\n let context = []\n if (jsonObject.homonym) {\n homonym = WordItem.readHomonym(jsonObject)\n }\n if (jsonObject.context) {\n context = WordItem.readContext(jsonObject)\n }\n const worditem = new WordItem({\n targetWord: jsonObject.targetWord,\n languageCode: jsonObject.languageCode,\n important: jsonObject.important,\n currentSession: jsonObject.currentSession,\n context: context,\n homonym: homonym\n })\n return worditem\n }\n\n /**\n * Construct the homonym portion of a WordItem from JSON\n *\n * @param jsonObject\n */\n static readHomonym (jsonObject) {\n return Homonym.readObject(jsonObject.homonym)\n }\n\n get hasTextQuoteSelectors () {\n return this.context.length > 0\n }\n\n /**\n * Construct the context portion of a WordItem from JSON\n *\n * @param jsonObject\n */\n static readContext (jsonObject) {\n let tqs = [] // eslint-disable-line prefer-const\n for (const jsonObj of jsonObject) {\n const tq = TextQuoteSelector.readObject(jsonObj)\n tqs.push(tq)\n }\n return tqs\n }\n\n /**\n * add one or more context selectors\n *\n * @param {TextQuoteSelector[]} selectors\n */\n addContext (selectors) {\n for (const s of selectors) {\n const found = this.context.filter(tqs => tqs.isEqual(s))\n if (found.length === 0) {\n this.context.push(s)\n }\n }\n }\n\n /**\n * getter for the lemmas in this WordItem\n */\n get lemmasList () {\n if (this.homonym && this.homonym.lexemes) {\n return this.homonym.lexemes.map(lexeme => lexeme.lemma.word).filter((value, index, self) => {\n return self.indexOf(value) === index\n }).join(', ')\n }\n return ''\n }\n\n /**\n * updates empty properties of this wordItem with those of the supplied worditem if also non-empty\n *\n * @param prevWordItem\n */\n merge (prevWordItem) {\n const checkProps = ['homonym', 'important', 'currentSession']\n for (const prop of checkProps) {\n if (this._emptyProp(prop) && !prevWordItem._emptyProp(prop)) {\n this[prop] = prevWordItem[prop]\n }\n }\n }\n\n /**\n * private method to detect an empty property\n *\n * @param propName\n */\n _emptyProp (propName) {\n return !this[propName] || (typeof this[propName] === 'object' && Object.keys(this[propName]).length === 0)\n }\n\n get formattedContext () {\n let res = {} // eslint-disable-line prefer-const\n for (const tq of this.context) {\n if (!res[tq.source]) {\n res[tq.source] = []\n }\n res[tq.source].push(tq)\n }\n return res\n }\n}\n","import WordItem from './word-item'\n\nexport default class WordList {\n /**\n * @class\n * @param {string} languageCode the language code of the list\n * @param {WordItem[]} worditems an optional array of WordItems with which to initialize the list\n */\n constructor (languageCode, worditems = []) {\n if (!languageCode) {\n throw new Error('Unable to construct a wordlist without a languagecode')\n }\n this.languageCode = languageCode\n this.items = {}\n worditems.forEach(item => {\n this.addWordItem(item)\n })\n }\n\n get size () {\n return Object.keys(this.items).length\n }\n\n /**\n * get the items of the list\n */\n get values () {\n return Object.values(this.items)\n }\n\n /**\n * checks to see if the list is empty\n *\n * @returns {boolean}\n */\n get isEmpty () {\n return Object.values(this.items).length === 0\n }\n\n addWordItem (item) {\n if (item.languageCode !== this.languageCode) {\n throw new Error(`Language Code mismatch ${item.languageCode} !=== ${this.languageCode}`)\n }\n const existingItem = this.getWordItem(item.targetWord, false)\n if (existingItem) {\n item.merge(existingItem)\n }\n const key = this._makeItemKey(this.languageCode, item.targetWord)\n this.items[key] = item\n }\n\n /**\n * delete an individual word item from the list\n *\n * @param {string} targetWord the word to delete\n * @returns {WordItem} the deleted item\n */\n deleteWordItem (targetWord) {\n const key = this._makeItemKey(this.languageCode, targetWord)\n const toDelete = this.items[key]\n if (toDelete) {\n delete this.items[key]\n }\n return toDelete\n }\n\n /**\n * delete all items from a list\n */\n removeAllWordItems () {\n this.items = {}\n }\n\n /**\n * get an item from a list\n *\n * @param targetWord the word to get\n * @param {boolean} create true to create the item if it doesn't exist\n * @param eventWordItemUpdated\n * @returns {WordItem} the retrieved item\n */\n getWordItem (targetWord, create = true, eventWordItemUpdated = null) {\n const key = this._makeItemKey(this.languageCode, targetWord)\n if (create && !this.items[key]) {\n const wordItem = new WordItem({ targetWord: targetWord, languageCode: this.languageCode })\n if (eventWordItemUpdated) {\n eventWordItemUpdated.pub({ dataObj: wordItem, params: { segment: 'common' } })\n }\n this.items[key] = wordItem\n }\n return this.items[key]\n }\n\n /**\n * make a key for a word item\n *\n * @param {string} languageCode\n * @param {string} targetWord\n */\n _makeItemKey (languageCode, targetWord) {\n return `${languageCode}:${targetWord.toLowerCase()}`\n }\n}\n","//\n// Main\n//\n\nfunction memoize (fn, options) {\n var cache = options && options.cache\n ? options.cache\n : cacheDefault\n\n var serializer = options && options.serializer\n ? options.serializer\n : serializerDefault\n\n var strategy = options && options.strategy\n ? options.strategy\n : strategyDefault\n\n return strategy(fn, {\n cache: cache,\n serializer: serializer\n })\n}\n\n//\n// Strategy\n//\n\nfunction isPrimitive (value) {\n return value == null || typeof value === 'number' || typeof value === 'boolean' // || typeof value === \"string\" 'unsafe' primitive for our needs\n}\n\nfunction monadic (fn, cache, serializer, arg) {\n var cacheKey = isPrimitive(arg) ? arg : serializer(arg)\n\n var computedValue = cache.get(cacheKey)\n if (typeof computedValue === 'undefined') {\n computedValue = fn.call(this, arg)\n cache.set(cacheKey, computedValue)\n }\n\n return computedValue\n}\n\nfunction variadic (fn, cache, serializer) {\n var args = Array.prototype.slice.call(arguments, 3)\n var cacheKey = serializer(args)\n\n var computedValue = cache.get(cacheKey)\n if (typeof computedValue === 'undefined') {\n computedValue = fn.apply(this, args)\n cache.set(cacheKey, computedValue)\n }\n\n return computedValue\n}\n\nfunction assemble (fn, context, strategy, cache, serialize) {\n return strategy.bind(\n context,\n fn,\n cache,\n serialize\n )\n}\n\nfunction strategyDefault (fn, options) {\n var strategy = fn.length === 1 ? monadic : variadic\n\n return assemble(\n fn,\n this,\n strategy,\n options.cache.create(),\n options.serializer\n )\n}\n\nfunction strategyVariadic (fn, options) {\n var strategy = variadic\n\n return assemble(\n fn,\n this,\n strategy,\n options.cache.create(),\n options.serializer\n )\n}\n\nfunction strategyMonadic (fn, options) {\n var strategy = monadic\n\n return assemble(\n fn,\n this,\n strategy,\n options.cache.create(),\n options.serializer\n )\n}\n\n//\n// Serializer\n//\n\nfunction serializerDefault () {\n return JSON.stringify(arguments)\n}\n\n//\n// Cache\n//\n\nfunction ObjectWithoutPrototypeCache () {\n this.cache = Object.create(null)\n}\n\nObjectWithoutPrototypeCache.prototype.has = function (key) {\n return (key in this.cache)\n}\n\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n return this.cache[key]\n}\n\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n this.cache[key] = value\n}\n\nvar cacheDefault = {\n create: function create () {\n return new ObjectWithoutPrototypeCache()\n }\n}\n\n//\n// API\n//\n\nmodule.exports = memoize\nmodule.exports.strategies = {\n variadic: strategyVariadic,\n monadic: strategyMonadic\n}\n","import { __assign } from \"tslib\";\nimport { pegParse } from './src/parser';\nimport { normalizeHashtagInPlural } from './src/normalize';\nexport * from './src/types';\nexport * from './src/parser';\nexport function parse(input, opts) {\n opts = __assign({ normalizeHashtagInPlural: true, shouldParseSkeleton: true }, (opts || {}));\n var els = pegParse(input, opts);\n if (opts.normalizeHashtagInPlural) {\n normalizeHashtagInPlural(els);\n }\n return els;\n}\n","import { __spreadArray } from \"tslib\";\nimport { isPluralElement, isLiteralElement, isSelectElement, } from './types';\nimport { pegParse } from './parser';\nvar PLURAL_HASHTAG_REGEX = /(^|[^\\\\])#/g;\n/**\n * Whether to convert `#` in plural rule options\n * to `{var, number}`\n * @param el AST Element\n * @param pluralStack current plural stack\n */\nexport function normalizeHashtagInPlural(els) {\n els.forEach(function (el) {\n // If we're encountering a plural el\n if (!isPluralElement(el) && !isSelectElement(el)) {\n return;\n }\n // Go down the options and search for # in any literal element\n Object.keys(el.options).forEach(function (id) {\n var _a;\n var opt = el.options[id];\n // If we got a match, we have to split this\n // and inject a NumberElement in the middle\n var matchingLiteralElIndex = -1;\n var literalEl = undefined;\n for (var i = 0; i < opt.value.length; i++) {\n var el_1 = opt.value[i];\n if (isLiteralElement(el_1) && PLURAL_HASHTAG_REGEX.test(el_1.value)) {\n matchingLiteralElIndex = i;\n literalEl = el_1;\n break;\n }\n }\n if (literalEl) {\n var newValue = literalEl.value.replace(PLURAL_HASHTAG_REGEX, \"$1{\" + el.value + \", number}\");\n var newEls = pegParse(newValue);\n (_a = opt.value).splice.apply(_a, __spreadArray([matchingLiteralElIndex, 1], newEls));\n }\n normalizeHashtagInPlural(opt.value);\n });\n });\n}\n","// @ts-nocheck\nimport { __assign, __extends } from \"tslib\";\n// @generated\nimport { SKELETON_TYPE, TYPE, } from './types';\nimport { parseDateTimeSkeleton, parseNumberSkeleton } from './skeleton';\nvar SyntaxError = /** @class */ (function (_super) {\n __extends(SyntaxError, _super);\n function SyntaxError(message, expected, found, location) {\n var _this = _super.call(this) || this;\n _this.message = message;\n _this.expected = expected;\n _this.found = found;\n _this.location = location;\n _this.name = \"SyntaxError\";\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(_this, SyntaxError);\n }\n return _this;\n }\n SyntaxError.buildMessage = function (expected, found) {\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, \"\\\\\\\"\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function (ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) { return \"\\\\x\" + hex(ch); });\n }\n function classEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\]/g, \"\\\\]\")\n .replace(/\\^/g, \"\\\\^\")\n .replace(/-/g, \"\\\\-\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function (ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) { return \"\\\\x\" + hex(ch); });\n }\n function describeExpectation(expectation) {\n switch (expectation.type) {\n case \"literal\":\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n case \"class\":\n var escapedParts = expectation.parts.map(function (part) {\n return Array.isArray(part)\n ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n : classEscape(part);\n });\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n case \"any\":\n return \"any character\";\n case \"end\":\n return \"end of input\";\n case \"other\":\n return expectation.description;\n }\n }\n function describeExpected(expected1) {\n var descriptions = expected1.map(describeExpectation);\n var i;\n var j;\n descriptions.sort();\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n function describeFound(found1) {\n return found1 ? \"\\\"\" + literalEscape(found1) + \"\\\"\" : \"end of input\";\n }\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n };\n return SyntaxError;\n}(Error));\nexport { SyntaxError };\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n var peg$FAILED = {};\n var peg$startRuleFunctions = { start: peg$parsestart };\n var peg$startRuleFunction = peg$parsestart;\n var peg$c0 = function () { return !ignoreTag; };\n var peg$c1 = function (x) { return x; };\n var peg$c2 = function () { return ignoreTag; };\n var peg$c3 = \"<\";\n var peg$c4 = peg$literalExpectation(\"<\", false);\n var peg$c5 = function (parts) {\n return parts.join('');\n };\n var peg$c6 = function () { return '<'; };\n var peg$c7 = function (messageText) {\n return __assign({ type: TYPE.literal, value: messageText }, insertLocation());\n };\n var peg$c8 = \"#\";\n var peg$c9 = peg$literalExpectation(\"#\", false);\n var peg$c10 = function () {\n return __assign({ type: TYPE.pound }, insertLocation());\n };\n var peg$c11 = peg$otherExpectation(\"tagElement\");\n var peg$c12 = function (open, children, close) {\n if (open !== close) {\n error(\"Mismatch tag \\\"\" + open + \"\\\" !== \\\"\" + close + \"\\\"\", location());\n }\n return __assign({ type: TYPE.tag, value: open, children: children }, insertLocation());\n };\n var peg$c13 = \"/>\";\n var peg$c14 = peg$literalExpectation(\"/>\", false);\n var peg$c15 = function (value) {\n return __assign({ type: TYPE.literal, value: value.join('') }, insertLocation());\n };\n var peg$c16 = \">\";\n var peg$c17 = peg$literalExpectation(\">\", false);\n var peg$c18 = function (tag) { return tag; };\n var peg$c19 = \"\";\n var peg$c20 = peg$literalExpectation(\"\", false);\n var peg$c21 = peg$otherExpectation(\"argumentElement\");\n var peg$c22 = \"{\";\n var peg$c23 = peg$literalExpectation(\"{\", false);\n var peg$c24 = \"}\";\n var peg$c25 = peg$literalExpectation(\"}\", false);\n var peg$c26 = function (value) {\n return __assign({ type: TYPE.argument, value: value }, insertLocation());\n };\n var peg$c27 = peg$otherExpectation(\"numberSkeletonId\");\n var peg$c28 = /^['\\/{}]/;\n var peg$c29 = peg$classExpectation([\"'\", \"/\", \"{\", \"}\"], false, false);\n var peg$c30 = peg$anyExpectation();\n var peg$c31 = peg$otherExpectation(\"numberSkeletonTokenOption\");\n var peg$c32 = \"/\";\n var peg$c33 = peg$literalExpectation(\"/\", false);\n var peg$c34 = function (option) { return option; };\n var peg$c35 = peg$otherExpectation(\"numberSkeletonToken\");\n var peg$c36 = function (stem, options) {\n return { stem: stem, options: options };\n };\n var peg$c37 = function (tokens) {\n return __assign({ type: SKELETON_TYPE.number, tokens: tokens, parsedOptions: shouldParseSkeleton ? parseNumberSkeleton(tokens) : {} }, insertLocation());\n };\n var peg$c38 = \"::\";\n var peg$c39 = peg$literalExpectation(\"::\", false);\n var peg$c40 = function (skeleton) { return skeleton; };\n var peg$c41 = function () { messageCtx.push('numberArgStyle'); return true; };\n var peg$c42 = function (style) {\n messageCtx.pop();\n return style.replace(/\\s*$/, '');\n };\n var peg$c43 = \",\";\n var peg$c44 = peg$literalExpectation(\",\", false);\n var peg$c45 = \"number\";\n var peg$c46 = peg$literalExpectation(\"number\", false);\n var peg$c47 = function (value, type, style) {\n return __assign({ type: type === 'number' ? TYPE.number : type === 'date' ? TYPE.date : TYPE.time, style: style && style[2], value: value }, insertLocation());\n };\n var peg$c48 = \"'\";\n var peg$c49 = peg$literalExpectation(\"'\", false);\n var peg$c50 = /^[^']/;\n var peg$c51 = peg$classExpectation([\"'\"], true, false);\n var peg$c52 = /^[^a-zA-Z'{}]/;\n var peg$c53 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], \"'\", \"{\", \"}\"], true, false);\n var peg$c54 = /^[a-zA-Z]/;\n var peg$c55 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"]], false, false);\n var peg$c56 = function (pattern) {\n return __assign({ type: SKELETON_TYPE.dateTime, pattern: pattern, parsedOptions: shouldParseSkeleton ? parseDateTimeSkeleton(pattern) : {} }, insertLocation());\n };\n var peg$c57 = function () { messageCtx.push('dateOrTimeArgStyle'); return true; };\n var peg$c58 = \"date\";\n var peg$c59 = peg$literalExpectation(\"date\", false);\n var peg$c60 = \"time\";\n var peg$c61 = peg$literalExpectation(\"time\", false);\n var peg$c62 = \"plural\";\n var peg$c63 = peg$literalExpectation(\"plural\", false);\n var peg$c64 = \"selectordinal\";\n var peg$c65 = peg$literalExpectation(\"selectordinal\", false);\n var peg$c66 = \"offset:\";\n var peg$c67 = peg$literalExpectation(\"offset:\", false);\n var peg$c68 = function (value, pluralType, offset, options) {\n return __assign({ type: TYPE.plural, pluralType: pluralType === 'plural' ? 'cardinal' : 'ordinal', value: value, offset: offset ? offset[2] : 0, options: options.reduce(function (all, _a) {\n var id = _a.id, value = _a.value, optionLocation = _a.location;\n if (id in all) {\n error(\"Duplicate option \\\"\" + id + \"\\\" in plural element: \\\"\" + text() + \"\\\"\", location());\n }\n all[id] = {\n value: value,\n location: optionLocation\n };\n return all;\n }, {}) }, insertLocation());\n };\n var peg$c69 = \"select\";\n var peg$c70 = peg$literalExpectation(\"select\", false);\n var peg$c71 = function (value, options) {\n return __assign({ type: TYPE.select, value: value, options: options.reduce(function (all, _a) {\n var id = _a.id, value = _a.value, optionLocation = _a.location;\n if (id in all) {\n error(\"Duplicate option \\\"\" + id + \"\\\" in select element: \\\"\" + text() + \"\\\"\", location());\n }\n all[id] = {\n value: value,\n location: optionLocation\n };\n return all;\n }, {}) }, insertLocation());\n };\n var peg$c72 = \"=\";\n var peg$c73 = peg$literalExpectation(\"=\", false);\n var peg$c74 = function (id) { messageCtx.push('select'); return true; };\n var peg$c75 = function (id, value) {\n messageCtx.pop();\n return __assign({ id: id,\n value: value }, insertLocation());\n };\n var peg$c76 = function (id) { messageCtx.push('plural'); return true; };\n var peg$c77 = function (id, value) {\n messageCtx.pop();\n return __assign({ id: id,\n value: value }, insertLocation());\n };\n var peg$c78 = peg$otherExpectation(\"whitespace\");\n var peg$c79 = /^[\\t-\\r \\x85\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/;\n var peg$c80 = peg$classExpectation([[\"\\t\", \"\\r\"], \" \", \"\\x85\", \"\\xA0\", \"\\u1680\", [\"\\u2000\", \"\\u200A\"], \"\\u2028\", \"\\u2029\", \"\\u202F\", \"\\u205F\", \"\\u3000\"], false, false);\n var peg$c81 = peg$otherExpectation(\"syntax pattern\");\n var peg$c82 = /^[!-\\/:-@[-\\^`{-~\\xA1-\\xA7\\xA9\\xAB\\xAC\\xAE\\xB0\\xB1\\xB6\\xBB\\xBF\\xD7\\xF7\\u2010-\\u2027\\u2030-\\u203E\\u2041-\\u2053\\u2055-\\u205E\\u2190-\\u245F\\u2500-\\u2775\\u2794-\\u2BFF\\u2E00-\\u2E7F\\u3001-\\u3003\\u3008-\\u3020\\u3030\\uFD3E\\uFD3F\\uFE45\\uFE46]/;\n var peg$c83 = peg$classExpectation([[\"!\", \"/\"], [\":\", \"@\"], [\"[\", \"^\"], \"`\", [\"{\", \"~\"], [\"\\xA1\", \"\\xA7\"], \"\\xA9\", \"\\xAB\", \"\\xAC\", \"\\xAE\", \"\\xB0\", \"\\xB1\", \"\\xB6\", \"\\xBB\", \"\\xBF\", \"\\xD7\", \"\\xF7\", [\"\\u2010\", \"\\u2027\"], [\"\\u2030\", \"\\u203E\"], [\"\\u2041\", \"\\u2053\"], [\"\\u2055\", \"\\u205E\"], [\"\\u2190\", \"\\u245F\"], [\"\\u2500\", \"\\u2775\"], [\"\\u2794\", \"\\u2BFF\"], [\"\\u2E00\", \"\\u2E7F\"], [\"\\u3001\", \"\\u3003\"], [\"\\u3008\", \"\\u3020\"], \"\\u3030\", \"\\uFD3E\", \"\\uFD3F\", \"\\uFE45\", \"\\uFE46\"], false, false);\n var peg$c84 = peg$otherExpectation(\"optional whitespace\");\n var peg$c85 = peg$otherExpectation(\"number\");\n var peg$c86 = \"-\";\n var peg$c87 = peg$literalExpectation(\"-\", false);\n var peg$c88 = function (negative, num) {\n return num\n ? negative\n ? -num\n : num\n : 0;\n };\n var peg$c89 = peg$otherExpectation(\"apostrophe\");\n var peg$c90 = peg$otherExpectation(\"double apostrophes\");\n var peg$c91 = \"''\";\n var peg$c92 = peg$literalExpectation(\"''\", false);\n var peg$c93 = function () { return \"'\"; };\n var peg$c94 = function (escapedChar, quotedChars) {\n return escapedChar + quotedChars.replace(\"''\", \"'\");\n };\n var peg$c95 = function (x) {\n return (x !== '<' &&\n x !== '{' &&\n !(isInPluralOption() && x === '#') &&\n !(isNestedMessageText() && x === '}'));\n };\n var peg$c96 = \"\\n\";\n var peg$c97 = peg$literalExpectation(\"\\n\", false);\n var peg$c98 = function (x) {\n return x === '<' || x === '>' || x === '{' || x === '}' || (isInPluralOption() && x === '#');\n };\n var peg$c99 = peg$otherExpectation(\"argNameOrNumber\");\n var peg$c100 = peg$otherExpectation(\"validTag\");\n var peg$c101 = peg$otherExpectation(\"argNumber\");\n var peg$c102 = \"0\";\n var peg$c103 = peg$literalExpectation(\"0\", false);\n var peg$c104 = function () { return 0; };\n var peg$c105 = /^[1-9]/;\n var peg$c106 = peg$classExpectation([[\"1\", \"9\"]], false, false);\n var peg$c107 = /^[0-9]/;\n var peg$c108 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n var peg$c109 = function (digits) {\n return parseInt(digits.join(''), 10);\n };\n var peg$c110 = peg$otherExpectation(\"argName\");\n var peg$c111 = peg$otherExpectation(\"tagName\");\n var peg$currPos = 0;\n var peg$savedPos = 0;\n var peg$posDetailsCache = [{ line: 1, column: 1 }];\n var peg$maxFailPos = 0;\n var peg$maxFailExpected = [];\n var peg$silentFails = 0;\n var peg$result;\n if (options.startRule !== undefined) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n function expected(description, location1) {\n location1 = location1 !== undefined\n ? location1\n : peg$computeLocation(peg$savedPos, peg$currPos);\n throw peg$buildStructuredError([peg$otherExpectation(description)], input.substring(peg$savedPos, peg$currPos), location1);\n }\n function error(message, location1) {\n location1 = location1 !== undefined\n ? location1\n : peg$computeLocation(peg$savedPos, peg$currPos);\n throw peg$buildSimpleError(message, location1);\n }\n function peg$literalExpectation(text1, ignoreCase) {\n return { type: \"literal\", text: text1, ignoreCase: ignoreCase };\n }\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos];\n var p;\n if (details) {\n return details;\n }\n else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n }\n else {\n details.column++;\n }\n p++;\n }\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos);\n var endPosDetails = peg$computePosDetails(endPos);\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n function peg$fail(expected1) {\n if (peg$currPos < peg$maxFailPos) {\n return;\n }\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n peg$maxFailExpected.push(expected1);\n }\n function peg$buildSimpleError(message, location1) {\n return new SyntaxError(message, [], \"\", location1);\n }\n function peg$buildStructuredError(expected1, found, location1) {\n return new SyntaxError(SyntaxError.buildMessage(expected1, found), expected1, found, location1);\n }\n function peg$parsestart() {\n var s0;\n s0 = peg$parsemessage();\n return s0;\n }\n function peg$parsemessage() {\n var s0, s1;\n s0 = [];\n s1 = peg$parsemessageElement();\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsemessageElement();\n }\n return s0;\n }\n function peg$parsemessageElement() {\n var s0, s1, s2;\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c0();\n if (s1) {\n s1 = undefined;\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsetagElement();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c1(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseliteralElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parseargumentElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parsesimpleFormatElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepluralElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parseselectElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepoundElement();\n }\n }\n }\n }\n }\n }\n return s0;\n }\n function peg$parsemessageText() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c2();\n if (s1) {\n s1 = undefined;\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsedoubleApostrophes();\n if (s3 === peg$FAILED) {\n s3 = peg$parsequotedString();\n if (s3 === peg$FAILED) {\n s3 = peg$parseunquotedString();\n if (s3 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 60) {\n s3 = peg$c3;\n peg$currPos++;\n }\n else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c4);\n }\n }\n }\n }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsedoubleApostrophes();\n if (s3 === peg$FAILED) {\n s3 = peg$parsequotedString();\n if (s3 === peg$FAILED) {\n s3 = peg$parseunquotedString();\n if (s3 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 60) {\n s3 = peg$c3;\n peg$currPos++;\n }\n else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c4);\n }\n }\n }\n }\n }\n }\n }\n else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c5(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsedoubleApostrophes();\n if (s2 === peg$FAILED) {\n s2 = peg$parsequotedString();\n if (s2 === peg$FAILED) {\n s2 = peg$parseunquotedString();\n if (s2 === peg$FAILED) {\n s2 = peg$parsenonTagStartingAngleBracket();\n }\n }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsedoubleApostrophes();\n if (s2 === peg$FAILED) {\n s2 = peg$parsequotedString();\n if (s2 === peg$FAILED) {\n s2 = peg$parseunquotedString();\n if (s2 === peg$FAILED) {\n s2 = peg$parsenonTagStartingAngleBracket();\n }\n }\n }\n }\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c5(s1);\n }\n s0 = s1;\n }\n return s0;\n }\n function peg$parsenonTagStartingAngleBracket() {\n var s0, s1, s2;\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n s2 = peg$parseopeningTag();\n if (s2 === peg$FAILED) {\n s2 = peg$parseclosingTag();\n if (s2 === peg$FAILED) {\n s2 = peg$parseselfClosingTag();\n }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = undefined;\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 60) {\n s2 = peg$c3;\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c4);\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c6();\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseliteralElement() {\n var s0, s1;\n s0 = peg$currPos;\n s1 = peg$parsemessageText();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c7(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parsepoundElement() {\n var s0, s1;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s1 = peg$c8;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c10();\n }\n s0 = s1;\n return s0;\n }\n function peg$parsetagElement() {\n var s0, s1, s2, s3;\n peg$silentFails++;\n s0 = peg$parseselfClosingTag();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseopeningTag();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemessage();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseclosingTag();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c12(s1, s2, s3);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c11);\n }\n }\n return s0;\n }\n function peg$parseselfClosingTag() {\n var s0, s1, s2, s3, s4, s5;\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 60) {\n s2 = peg$c3;\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c4);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsevalidTag();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c13) {\n s5 = peg$c13;\n peg$currPos += 2;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s5 !== peg$FAILED) {\n s2 = [s2, s3, s4, s5];\n s1 = s2;\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c15(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parseopeningTag() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 60) {\n s1 = peg$c3;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c4);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsevalidTag();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s3 = peg$c16;\n peg$currPos++;\n }\n else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c17);\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c18(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseclosingTag() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c19) {\n s1 = peg$c19;\n peg$currPos += 2;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c20);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsevalidTag();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s3 = peg$c16;\n peg$currPos++;\n }\n else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c17);\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c18(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseargumentElement() {\n var s0, s1, s2, s3, s4, s5;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c22;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargNameOrNumber();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s5 = peg$c24;\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c25);\n }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s3);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c21);\n }\n }\n return s0;\n }\n function peg$parsenumberSkeletonId() {\n var s0, s1, s2, s3, s4;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parsewhiteSpace();\n if (s4 === peg$FAILED) {\n if (peg$c28.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c29);\n }\n }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n }\n else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c30);\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parsewhiteSpace();\n if (s4 === peg$FAILED) {\n if (peg$c28.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c29);\n }\n }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n }\n else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c30);\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c27);\n }\n }\n return s0;\n }\n function peg$parsenumberSkeletonTokenOption() {\n var s0, s1, s2;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 47) {\n s1 = peg$c32;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c33);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumberSkeletonId();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c34(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c31);\n }\n }\n return s0;\n }\n function peg$parsenumberSkeletonToken() {\n var s0, s1, s2, s3, s4;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumberSkeletonId();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsenumberSkeletonTokenOption();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsenumberSkeletonTokenOption();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c36(s2, s3);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c35);\n }\n }\n return s0;\n }\n function peg$parsenumberSkeleton() {\n var s0, s1, s2;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsenumberSkeletonToken();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsenumberSkeletonToken();\n }\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c37(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parsenumberArgStyle() {\n var s0, s1, s2;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c38) {\n s1 = peg$c38;\n peg$currPos += 2;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c39);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumberSkeleton();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c40(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c41();\n if (s1) {\n s1 = undefined;\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemessageText();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c42(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n return s0;\n }\n function peg$parsenumberFormatElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c22;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargNameOrNumber();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c43;\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c44);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c45) {\n s7 = peg$c45;\n peg$currPos += 6;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c46);\n }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n s9 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s10 = peg$c43;\n peg$currPos++;\n }\n else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c44);\n }\n }\n if (s10 !== peg$FAILED) {\n s11 = peg$parse_();\n if (s11 !== peg$FAILED) {\n s12 = peg$parsenumberArgStyle();\n if (s12 !== peg$FAILED) {\n s10 = [s10, s11, s12];\n s9 = s10;\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s11 = peg$c24;\n peg$currPos++;\n }\n else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c25);\n }\n }\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c47(s3, s7, s9);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsedateTimeSkeletonLiteral() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 39) {\n s1 = peg$c48;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c49);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsedoubleApostrophes();\n if (s3 === peg$FAILED) {\n if (peg$c50.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c51);\n }\n }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsedoubleApostrophes();\n if (s3 === peg$FAILED) {\n if (peg$c50.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c51);\n }\n }\n }\n }\n }\n else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s3 = peg$c48;\n peg$currPos++;\n }\n else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c49);\n }\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = [];\n s1 = peg$parsedoubleApostrophes();\n if (s1 === peg$FAILED) {\n if (peg$c52.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c53);\n }\n }\n }\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsedoubleApostrophes();\n if (s1 === peg$FAILED) {\n if (peg$c52.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c53);\n }\n }\n }\n }\n }\n else {\n s0 = peg$FAILED;\n }\n }\n return s0;\n }\n function peg$parsedateTimeSkeletonPattern() {\n var s0, s1;\n s0 = [];\n if (peg$c54.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c55);\n }\n }\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c54.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c55);\n }\n }\n }\n }\n else {\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsedateTimeSkeleton() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$parsedateTimeSkeletonLiteral();\n if (s3 === peg$FAILED) {\n s3 = peg$parsedateTimeSkeletonPattern();\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsedateTimeSkeletonLiteral();\n if (s3 === peg$FAILED) {\n s3 = peg$parsedateTimeSkeletonPattern();\n }\n }\n }\n else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n }\n else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c56(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parsedateOrTimeArgStyle() {\n var s0, s1, s2;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c38) {\n s1 = peg$c38;\n peg$currPos += 2;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c39);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsedateTimeSkeleton();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c40(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c57();\n if (s1) {\n s1 = undefined;\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemessageText();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c42(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n return s0;\n }\n function peg$parsedateOrTimeFormatElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c22;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargNameOrNumber();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c43;\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c44);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c58) {\n s7 = peg$c58;\n peg$currPos += 4;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c59);\n }\n }\n if (s7 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c60) {\n s7 = peg$c60;\n peg$currPos += 4;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c61);\n }\n }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n s9 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s10 = peg$c43;\n peg$currPos++;\n }\n else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c44);\n }\n }\n if (s10 !== peg$FAILED) {\n s11 = peg$parse_();\n if (s11 !== peg$FAILED) {\n s12 = peg$parsedateOrTimeArgStyle();\n if (s12 !== peg$FAILED) {\n s10 = [s10, s11, s12];\n s9 = s10;\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s11 = peg$c24;\n peg$currPos++;\n }\n else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c25);\n }\n }\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c47(s3, s7, s9);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsesimpleFormatElement() {\n var s0;\n s0 = peg$parsenumberFormatElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parsedateOrTimeFormatElement();\n }\n return s0;\n }\n function peg$parsepluralElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c22;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargNameOrNumber();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c43;\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c44);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c62) {\n s7 = peg$c62;\n peg$currPos += 6;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c63);\n }\n }\n if (s7 === peg$FAILED) {\n if (input.substr(peg$currPos, 13) === peg$c64) {\n s7 = peg$c64;\n peg$currPos += 13;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c65);\n }\n }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s9 = peg$c43;\n peg$currPos++;\n }\n else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c44);\n }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n s11 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c66) {\n s12 = peg$c66;\n peg$currPos += 7;\n }\n else {\n s12 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c67);\n }\n }\n if (s12 !== peg$FAILED) {\n s13 = peg$parse_();\n if (s13 !== peg$FAILED) {\n s14 = peg$parsenumber();\n if (s14 !== peg$FAILED) {\n s12 = [s12, s13, s14];\n s11 = s12;\n }\n else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse_();\n if (s12 !== peg$FAILED) {\n s13 = [];\n s14 = peg$parsepluralOption();\n if (s14 !== peg$FAILED) {\n while (s14 !== peg$FAILED) {\n s13.push(s14);\n s14 = peg$parsepluralOption();\n }\n }\n else {\n s13 = peg$FAILED;\n }\n if (s13 !== peg$FAILED) {\n s14 = peg$parse_();\n if (s14 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s15 = peg$c24;\n peg$currPos++;\n }\n else {\n s15 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c25);\n }\n }\n if (s15 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c68(s3, s7, s11, s13);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseselectElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c22;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargNameOrNumber();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c43;\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c44);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c69) {\n s7 = peg$c69;\n peg$currPos += 6;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c70);\n }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s9 = peg$c43;\n peg$currPos++;\n }\n else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c44);\n }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n s11 = [];\n s12 = peg$parseselectOption();\n if (s12 !== peg$FAILED) {\n while (s12 !== peg$FAILED) {\n s11.push(s12);\n s12 = peg$parseselectOption();\n }\n }\n else {\n s11 = peg$FAILED;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse_();\n if (s12 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s13 = peg$c24;\n peg$currPos++;\n }\n else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c25);\n }\n }\n if (s13 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c71(s3, s11);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsepluralRuleSelectValue() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s2 = peg$c72;\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c73);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenumber();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseargName();\n }\n return s0;\n }\n function peg$parseselectOption() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseargName();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s4 = peg$c22;\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s5 = peg$c74(s2);\n if (s5) {\n s5 = undefined;\n }\n else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsemessage();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c24;\n peg$currPos++;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c25);\n }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c75(s2, s6);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsepluralOption() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsepluralRuleSelectValue();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s4 = peg$c22;\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s5 = peg$c76(s2);\n if (s5) {\n s5 = undefined;\n }\n else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsemessage();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c24;\n peg$currPos++;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c25);\n }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c77(s2, s6);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsewhiteSpace() {\n var s0, s1;\n peg$silentFails++;\n if (peg$c79.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c80);\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c78);\n }\n }\n return s0;\n }\n function peg$parsepatternSyntax() {\n var s0, s1;\n peg$silentFails++;\n if (peg$c82.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c83);\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c81);\n }\n }\n return s0;\n }\n function peg$parse_() {\n var s0, s1, s2;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewhiteSpace();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewhiteSpace();\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c84);\n }\n }\n return s0;\n }\n function peg$parsenumber() {\n var s0, s1, s2;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c86;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c87);\n }\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseargNumber();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c88(s1, s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c85);\n }\n }\n return s0;\n }\n function peg$parseapostrophe() {\n var s0, s1;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 39) {\n s0 = peg$c48;\n peg$currPos++;\n }\n else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c49);\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c89);\n }\n }\n return s0;\n }\n function peg$parsedoubleApostrophes() {\n var s0, s1;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c91) {\n s1 = peg$c91;\n peg$currPos += 2;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c92);\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c93();\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c90);\n }\n }\n return s0;\n }\n function peg$parsequotedString() {\n var s0, s1, s2, s3, s4, s5;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 39) {\n s1 = peg$c48;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c49);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseescapedChar();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = [];\n if (input.substr(peg$currPos, 2) === peg$c91) {\n s5 = peg$c91;\n peg$currPos += 2;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c92);\n }\n }\n if (s5 === peg$FAILED) {\n if (peg$c50.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c51);\n }\n }\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (input.substr(peg$currPos, 2) === peg$c91) {\n s5 = peg$c91;\n peg$currPos += 2;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c92);\n }\n }\n if (s5 === peg$FAILED) {\n if (peg$c50.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c51);\n }\n }\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n }\n else {\n s3 = s4;\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s4 = peg$c48;\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c49);\n }\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c94(s2, s3);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseunquotedString() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c30);\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s3 = peg$c95(s2);\n if (s3) {\n s3 = undefined;\n }\n else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 10) {\n s1 = peg$c96;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c97);\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n return s0;\n }\n function peg$parseescapedChar() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c30);\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s3 = peg$c98(s2);\n if (s3) {\n s3 = undefined;\n }\n else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n return s0;\n }\n function peg$parseargNameOrNumber() {\n var s0, s1;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parseargNumber();\n if (s1 === peg$FAILED) {\n s1 = peg$parseargName();\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c99);\n }\n }\n return s0;\n }\n function peg$parsevalidTag() {\n var s0, s1;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parseargNumber();\n if (s1 === peg$FAILED) {\n s1 = peg$parsetagName();\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c100);\n }\n }\n return s0;\n }\n function peg$parseargNumber() {\n var s0, s1, s2, s3, s4;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 48) {\n s1 = peg$c102;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c103);\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c104();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (peg$c105.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c106);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c107.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c108);\n }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c107.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c108);\n }\n }\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c109(s1);\n }\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c101);\n }\n }\n return s0;\n }\n function peg$parseargName() {\n var s0, s1, s2, s3, s4;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parsewhiteSpace();\n if (s4 === peg$FAILED) {\n s4 = peg$parsepatternSyntax();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n }\n else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c30);\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parsewhiteSpace();\n if (s4 === peg$FAILED) {\n s4 = peg$parsepatternSyntax();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n }\n else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c30);\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c110);\n }\n }\n return s0;\n }\n function peg$parsetagName() {\n var s0, s1, s2, s3, s4;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n if (input.charCodeAt(peg$currPos) === 45) {\n s2 = peg$c86;\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c87);\n }\n }\n if (s2 === peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parsewhiteSpace();\n if (s4 === peg$FAILED) {\n s4 = peg$parsepatternSyntax();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n }\n else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c30);\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (input.charCodeAt(peg$currPos) === 45) {\n s2 = peg$c86;\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c87);\n }\n }\n if (s2 === peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parsewhiteSpace();\n if (s4 === peg$FAILED) {\n s4 = peg$parsepatternSyntax();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n }\n else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c30);\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n }\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c111);\n }\n }\n return s0;\n }\n var messageCtx = ['root'];\n function isNestedMessageText() {\n return messageCtx.length > 1;\n }\n function isInPluralOption() {\n return messageCtx[messageCtx.length - 1] === 'plural';\n }\n function insertLocation() {\n return options && options.captureLocation ? {\n location: location()\n } : {};\n }\n var ignoreTag = options && options.ignoreTag;\n var shouldParseSkeleton = options && options.shouldParseSkeleton;\n peg$result = peg$startRuleFunction();\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n }\n else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n throw peg$buildStructuredError(peg$maxFailExpected, peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos));\n }\n}\nexport var pegParse = peg$parse;\n","import { __assign } from \"tslib\";\n/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n var result = {};\n skeleton.replace(DATE_TIME_REGEX, function (match) {\n var len = match.length;\n switch (match[0]) {\n // Era\n case 'G':\n result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n break;\n // Year\n case 'y':\n result.year = len === 2 ? '2-digit' : 'numeric';\n break;\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n // Quarter\n case 'q':\n case 'Q':\n throw new RangeError('`q/Q` (quarter) patterns are not supported');\n // Month\n case 'M':\n case 'L':\n result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n break;\n // Week\n case 'w':\n case 'W':\n throw new RangeError('`w/W` (week) patterns are not supported');\n case 'd':\n result.day = ['numeric', '2-digit'][len - 1];\n break;\n case 'D':\n case 'F':\n case 'g':\n throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n // Weekday\n case 'E':\n result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n break;\n case 'e':\n if (len < 4) {\n throw new RangeError('`e..eee` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n case 'c':\n if (len < 4) {\n throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n // Period\n case 'a': // AM, PM\n result.hour12 = true;\n break;\n case 'b': // am, pm, noon, midnight\n case 'B': // flexible day periods\n throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n // Hour\n case 'h':\n result.hourCycle = 'h12';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'H':\n result.hourCycle = 'h23';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'K':\n result.hourCycle = 'h11';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'k':\n result.hourCycle = 'h24';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'j':\n case 'J':\n case 'C':\n throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n // Minute\n case 'm':\n result.minute = ['numeric', '2-digit'][len - 1];\n break;\n // Second\n case 's':\n result.second = ['numeric', '2-digit'][len - 1];\n break;\n case 'S':\n case 'A':\n throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n // Zone\n case 'z': // 1..3, 4: specific non-location format\n result.timeZoneName = len < 4 ? 'short' : 'long';\n break;\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n }\n return '';\n });\n return result;\n}\nfunction icuUnitToEcma(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n var result = {};\n str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n // @@@ case\n if (typeof g2 !== 'string') {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length;\n }\n // @@@+ case\n else if (g2 === '+') {\n result.minimumSignificantDigits = g1.length;\n }\n // .### case\n else if (g1[0] === '#') {\n result.maximumSignificantDigits = g1.length;\n }\n // .@@## or .@@@ case\n else {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits =\n g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n return '';\n });\n return result;\n}\nfunction parseSign(str) {\n switch (str) {\n case 'sign-auto':\n return {\n signDisplay: 'auto',\n };\n case 'sign-accounting':\n case '()':\n return {\n currencySign: 'accounting',\n };\n case 'sign-always':\n case '+!':\n return {\n signDisplay: 'always',\n };\n case 'sign-accounting-always':\n case '()!':\n return {\n signDisplay: 'always',\n currencySign: 'accounting',\n };\n case 'sign-except-zero':\n case '+?':\n return {\n signDisplay: 'exceptZero',\n };\n case 'sign-accounting-except-zero':\n case '()?':\n return {\n signDisplay: 'exceptZero',\n currencySign: 'accounting',\n };\n case 'sign-never':\n case '+_':\n return {\n signDisplay: 'never',\n };\n }\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n // Engineering\n var result;\n if (stem[0] === 'E' && stem[1] === 'E') {\n result = {\n notation: 'engineering',\n };\n stem = stem.slice(2);\n }\n else if (stem[0] === 'E') {\n result = {\n notation: 'scientific',\n };\n stem = stem.slice(1);\n }\n if (result) {\n var signDisplay = stem.slice(0, 2);\n if (signDisplay === '+!') {\n result.signDisplay = 'always';\n stem = stem.slice(2);\n }\n else if (signDisplay === '+?') {\n result.signDisplay = 'exceptZero';\n stem = stem.slice(2);\n }\n if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n throw new Error('Malformed concise eng/scientific notation');\n }\n result.minimumIntegerDigits = stem.length;\n }\n return result;\n}\nfunction parseNotationOptions(opt) {\n var result = {};\n var signOpts = parseSign(opt);\n if (signOpts) {\n return signOpts;\n }\n return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function parseNumberSkeleton(tokens) {\n var result = {};\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n switch (token.stem) {\n case 'percent':\n case '%':\n result.style = 'percent';\n continue;\n case '%x100':\n result.style = 'percent';\n result.scale = 100;\n continue;\n case 'currency':\n result.style = 'currency';\n result.currency = token.options[0];\n continue;\n case 'group-off':\n case ',_':\n result.useGrouping = false;\n continue;\n case 'precision-integer':\n case '.':\n result.maximumFractionDigits = 0;\n continue;\n case 'measure-unit':\n case 'unit':\n result.style = 'unit';\n result.unit = icuUnitToEcma(token.options[0]);\n continue;\n case 'compact-short':\n case 'K':\n result.notation = 'compact';\n result.compactDisplay = 'short';\n continue;\n case 'compact-long':\n case 'KK':\n result.notation = 'compact';\n result.compactDisplay = 'long';\n continue;\n case 'scientific':\n result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'engineering':\n result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'notation-simple':\n result.notation = 'standard';\n continue;\n // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n case 'unit-width-narrow':\n result.currencyDisplay = 'narrowSymbol';\n result.unitDisplay = 'narrow';\n continue;\n case 'unit-width-short':\n result.currencyDisplay = 'code';\n result.unitDisplay = 'short';\n continue;\n case 'unit-width-full-name':\n result.currencyDisplay = 'name';\n result.unitDisplay = 'long';\n continue;\n case 'unit-width-iso-code':\n result.currencyDisplay = 'symbol';\n continue;\n case 'scale':\n result.scale = parseFloat(token.options[0]);\n continue;\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n case 'integer-width':\n if (token.options.length > 1) {\n throw new RangeError('integer-width stems only accept a single optional option');\n }\n token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n if (g1) {\n result.minimumIntegerDigits = g2.length;\n }\n else if (g3 && g4) {\n throw new Error('We currently do not support maximum integer digits');\n }\n else if (g5) {\n throw new Error('We currently do not support exact integer digits');\n }\n return '';\n });\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n result.minimumIntegerDigits = token.stem.length;\n continue;\n }\n if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n // Precision\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n // precision-integer case\n if (token.options.length > 1) {\n throw new RangeError('Fraction-precision stems only accept a single optional option');\n }\n token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n // .000* case (before ICU67 it was .000+)\n if (g2 === '*') {\n result.minimumFractionDigits = g1.length;\n }\n // .### case\n else if (g3 && g3[0] === '#') {\n result.maximumFractionDigits = g3.length;\n }\n // .00## case\n else if (g4 && g5) {\n result.minimumFractionDigits = g4.length;\n result.maximumFractionDigits = g4.length + g5.length;\n }\n else {\n result.minimumFractionDigits = g1.length;\n result.maximumFractionDigits = g1.length;\n }\n return '';\n });\n if (token.options.length) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.options[0]));\n }\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n continue;\n }\n var signOpts = parseSign(token.stem);\n if (signOpts) {\n result = __assign(__assign({}, result), signOpts);\n }\n var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n if (conciseScientificAndEngineeringOpts) {\n result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);\n }\n }\n return result;\n}\n","export var TYPE;\n(function (TYPE) {\n /**\n * Raw text\n */\n TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n /**\n * Variable w/o any format, e.g `var` in `this is a {var}`\n */\n TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n /**\n * Variable w/ number format\n */\n TYPE[TYPE[\"number\"] = 2] = \"number\";\n /**\n * Variable w/ date format\n */\n TYPE[TYPE[\"date\"] = 3] = \"date\";\n /**\n * Variable w/ time format\n */\n TYPE[TYPE[\"time\"] = 4] = \"time\";\n /**\n * Variable w/ select format\n */\n TYPE[TYPE[\"select\"] = 5] = \"select\";\n /**\n * Variable w/ plural format\n */\n TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n /**\n * Only possible within plural argument.\n * This is the `#` symbol that will be substituted with the count.\n */\n TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n /**\n * XML-like tag\n */\n TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE || (TYPE = {}));\nexport var SKELETON_TYPE;\n(function (SKELETON_TYPE) {\n SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE || (SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n return el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n return el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n return {\n type: TYPE.literal,\n value: value,\n };\n}\nexport function createNumberElement(value, style) {\n return {\n type: TYPE.number,\n value: value,\n style: style,\n };\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\nexport function __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\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { IntlMessageFormat } from './src/core';\nexport * from './src/formatters';\nexport * from './src/core';\nexport * from './src/error';\nexport default IntlMessageFormat;\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { __assign, __spreadArray } from \"tslib\";\nimport { parse } from 'intl-messageformat-parser';\nimport * as memoize from 'fast-memoize';\nimport { formatToParts, PART_TYPE, } from './formatters';\n// -- MessageFormat --------------------------------------------------------\nfunction mergeConfig(c1, c2) {\n if (!c2) {\n return c1;\n }\n return __assign(__assign(__assign({}, (c1 || {})), (c2 || {})), Object.keys(c1).reduce(function (all, k) {\n all[k] = __assign(__assign({}, c1[k]), (c2[k] || {}));\n return all;\n }, {}));\n}\nfunction mergeConfigs(defaultConfig, configs) {\n if (!configs) {\n return defaultConfig;\n }\n return Object.keys(defaultConfig).reduce(function (all, k) {\n all[k] = mergeConfig(defaultConfig[k], configs[k]);\n return all;\n }, __assign({}, defaultConfig));\n}\nfunction createFastMemoizeCache(store) {\n return {\n create: function () {\n return {\n has: function (key) {\n return key in store;\n },\n get: function (key) {\n return store[key];\n },\n set: function (key, value) {\n store[key] = value;\n },\n };\n },\n };\n}\n// @ts-ignore this is to deal with rollup's default import shenanigans\nvar _memoizeIntl = memoize.default || memoize;\nvar memoizeIntl = _memoizeIntl;\nfunction createDefaultFormatters(cache) {\n if (cache === void 0) { cache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n }; }\n return {\n getNumberFormat: memoizeIntl(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.number),\n strategy: memoizeIntl.strategies.variadic,\n }),\n getDateTimeFormat: memoizeIntl(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.dateTime),\n strategy: memoizeIntl.strategies.variadic,\n }),\n getPluralRules: memoizeIntl(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.pluralRules),\n strategy: memoizeIntl.strategies.variadic,\n }),\n };\n}\nvar IntlMessageFormat = /** @class */ (function () {\n function IntlMessageFormat(message, locales, overrideFormats, opts) {\n var _this = this;\n if (locales === void 0) { locales = IntlMessageFormat.defaultLocale; }\n this.formatterCache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n };\n this.format = function (values) {\n var parts = _this.formatToParts(values);\n // Hot path for straight simple msg translations\n if (parts.length === 1) {\n return parts[0].value;\n }\n var result = parts.reduce(function (all, part) {\n if (!all.length ||\n part.type !== PART_TYPE.literal ||\n typeof all[all.length - 1] !== 'string') {\n all.push(part.value);\n }\n else {\n all[all.length - 1] += part.value;\n }\n return all;\n }, []);\n if (result.length <= 1) {\n return result[0] || '';\n }\n return result;\n };\n this.formatToParts = function (values) {\n return formatToParts(_this.ast, _this.locales, _this.formatters, _this.formats, values, undefined, _this.message);\n };\n this.resolvedOptions = function () { return ({\n locale: Intl.NumberFormat.supportedLocalesOf(_this.locales)[0],\n }); };\n this.getAst = function () { return _this.ast; };\n if (typeof message === 'string') {\n this.message = message;\n if (!IntlMessageFormat.__parse) {\n throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');\n }\n // Parse string messages into an AST.\n this.ast = IntlMessageFormat.__parse(message, {\n normalizeHashtagInPlural: false,\n ignoreTag: opts === null || opts === void 0 ? void 0 : opts.ignoreTag,\n });\n }\n else {\n this.ast = message;\n }\n if (!Array.isArray(this.ast)) {\n throw new TypeError('A message must be provided as a String or AST.');\n }\n // Creates a new object with the specified `formats` merged with the default\n // formats.\n this.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);\n // Defined first because it's used to build the format pattern.\n this.locales = locales;\n this.formatters =\n (opts && opts.formatters) || createDefaultFormatters(this.formatterCache);\n }\n Object.defineProperty(IntlMessageFormat, \"defaultLocale\", {\n get: function () {\n if (!IntlMessageFormat.memoizedDefaultLocale) {\n IntlMessageFormat.memoizedDefaultLocale = new Intl.NumberFormat().resolvedOptions().locale;\n }\n return IntlMessageFormat.memoizedDefaultLocale;\n },\n enumerable: false,\n configurable: true\n });\n IntlMessageFormat.memoizedDefaultLocale = null;\n IntlMessageFormat.__parse = parse;\n // Default format options used as the prototype of the `formats` provided to the\n // constructor. These are used when constructing the internal Intl.NumberFormat\n // and Intl.DateTimeFormat instances.\n IntlMessageFormat.formats = {\n number: {\n currency: {\n style: 'currency',\n },\n percent: {\n style: 'percent',\n },\n },\n date: {\n short: {\n month: 'numeric',\n day: 'numeric',\n year: '2-digit',\n },\n medium: {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n },\n long: {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n full: {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n },\n time: {\n short: {\n hour: 'numeric',\n minute: 'numeric',\n },\n medium: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n long: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n full: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n },\n };\n return IntlMessageFormat;\n}());\nexport { IntlMessageFormat };\n","import { __extends } from \"tslib\";\nexport var ErrorCode;\n(function (ErrorCode) {\n // When we have a placeholder but no value to format\n ErrorCode[\"MISSING_VALUE\"] = \"MISSING_VALUE\";\n // When value supplied is invalid\n ErrorCode[\"INVALID_VALUE\"] = \"INVALID_VALUE\";\n // When we need specific Intl API but it's not available\n ErrorCode[\"MISSING_INTL_API\"] = \"MISSING_INTL_API\";\n})(ErrorCode || (ErrorCode = {}));\nvar FormatError = /** @class */ (function (_super) {\n __extends(FormatError, _super);\n function FormatError(msg, code, originalMessage) {\n var _this = _super.call(this, msg) || this;\n _this.code = code;\n _this.originalMessage = originalMessage;\n return _this;\n }\n FormatError.prototype.toString = function () {\n return \"[formatjs Error: \" + this.code + \"] \" + this.message;\n };\n return FormatError;\n}(Error));\nexport { FormatError };\nvar InvalidValueError = /** @class */ (function (_super) {\n __extends(InvalidValueError, _super);\n function InvalidValueError(variableId, value, options, originalMessage) {\n return _super.call(this, \"Invalid values for \\\"\" + variableId + \"\\\": \\\"\" + value + \"\\\". Options are \\\"\" + Object.keys(options).join('\", \"') + \"\\\"\", ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueError;\n}(FormatError));\nexport { InvalidValueError };\nvar InvalidValueTypeError = /** @class */ (function (_super) {\n __extends(InvalidValueTypeError, _super);\n function InvalidValueTypeError(value, type, originalMessage) {\n return _super.call(this, \"Value for \\\"\" + value + \"\\\" must be of type \" + type, ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueTypeError;\n}(FormatError));\nexport { InvalidValueTypeError };\nvar MissingValueError = /** @class */ (function (_super) {\n __extends(MissingValueError, _super);\n function MissingValueError(variableId, originalMessage) {\n return _super.call(this, \"The intl string context variable \\\"\" + variableId + \"\\\" was not provided to the string \\\"\" + originalMessage + \"\\\"\", ErrorCode.MISSING_VALUE, originalMessage) || this;\n }\n return MissingValueError;\n}(FormatError));\nexport { MissingValueError };\n","import { isArgumentElement, isDateElement, isDateTimeSkeleton, isLiteralElement, isNumberElement, isNumberSkeleton, isPluralElement, isPoundElement, isSelectElement, isTimeElement, isTagElement, } from 'intl-messageformat-parser';\nimport { MissingValueError, InvalidValueError, ErrorCode, FormatError, InvalidValueTypeError, } from './error';\nexport var PART_TYPE;\n(function (PART_TYPE) {\n PART_TYPE[PART_TYPE[\"literal\"] = 0] = \"literal\";\n PART_TYPE[PART_TYPE[\"object\"] = 1] = \"object\";\n})(PART_TYPE || (PART_TYPE = {}));\nfunction mergeLiteral(parts) {\n if (parts.length < 2) {\n return parts;\n }\n return parts.reduce(function (all, part) {\n var lastPart = all[all.length - 1];\n if (!lastPart ||\n lastPart.type !== PART_TYPE.literal ||\n part.type !== PART_TYPE.literal) {\n all.push(part);\n }\n else {\n lastPart.value += part.value;\n }\n return all;\n }, []);\n}\nexport function isFormatXMLElementFn(el) {\n return typeof el === 'function';\n}\n// TODO(skeleton): add skeleton support\nexport function formatToParts(els, locales, formatters, formats, values, currentPluralValue, \n// For debugging\noriginalMessage) {\n // Hot path for straight simple msg translations\n if (els.length === 1 && isLiteralElement(els[0])) {\n return [\n {\n type: PART_TYPE.literal,\n value: els[0].value,\n },\n ];\n }\n var result = [];\n for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {\n var el = els_1[_i];\n // Exit early for string parts.\n if (isLiteralElement(el)) {\n result.push({\n type: PART_TYPE.literal,\n value: el.value,\n });\n continue;\n }\n // TODO: should this part be literal type?\n // Replace `#` in plural rules with the actual numeric value.\n if (isPoundElement(el)) {\n if (typeof currentPluralValue === 'number') {\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getNumberFormat(locales).format(currentPluralValue),\n });\n }\n continue;\n }\n var varName = el.value;\n // Enforce that all required values are provided by the caller.\n if (!(values && varName in values)) {\n throw new MissingValueError(varName, originalMessage);\n }\n var value = values[varName];\n if (isArgumentElement(el)) {\n if (!value || typeof value === 'string' || typeof value === 'number') {\n value =\n typeof value === 'string' || typeof value === 'number'\n ? String(value)\n : '';\n }\n result.push({\n type: typeof value === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: value,\n });\n continue;\n }\n // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n if (isDateElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.date[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTimeElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.time[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isNumberElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.number[el.style]\n : isNumberSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n if (style && style.scale) {\n value =\n value *\n (style.scale || 1);\n }\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getNumberFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTagElement(el)) {\n var children = el.children, value_1 = el.value;\n var formatFn = values[value_1];\n if (!isFormatXMLElementFn(formatFn)) {\n throw new InvalidValueTypeError(value_1, 'function', originalMessage);\n }\n var parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);\n var chunks = formatFn(parts.map(function (p) { return p.value; }));\n if (!Array.isArray(chunks)) {\n chunks = [chunks];\n }\n result.push.apply(result, chunks.map(function (c) {\n return {\n type: typeof c === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: c,\n };\n }));\n }\n if (isSelectElement(el)) {\n var opt = el.options[value] || el.options.other;\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));\n continue;\n }\n if (isPluralElement(el)) {\n var opt = el.options[\"=\" + value];\n if (!opt) {\n if (!Intl.PluralRules) {\n throw new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API, originalMessage);\n }\n var rule = formatters\n .getPluralRules(locales, { type: el.pluralType })\n .select(value - (el.offset || 0));\n opt = el.options[rule] || el.options.other;\n }\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el.offset || 0)));\n continue;\n }\n }\n return mergeLiteral(result);\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\nexport function __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\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import MessageBundle from '@l10n/message-bundle'\n\n/**\n * Combines several message bundles of different locales.\n */\nexport default class L10n {\n constructor () {\n this.selectedLocale = undefined // A locale that currently selected\n this.bundles = new Map() // Maps message bundles to their locales\n return this\n }\n\n /**\n * Adds, or appends, one or several messages for a locale specified.\n * This method is chainable.\n *\n * @param {string} messageJSON - Messages in a JSON string\n * @param {string} locale - A locale of the messages\n * @param {Function} missingTranslationMsgFn - A placeholder message that will be shown if translation is not found.\n * @returns {L10n} - Self reference (for chaining)\n */\n addMessages (messageJSON, locale, missingTranslationMsgFn) {\n let messageBundle\n if (this.bundles.has(locale)) {\n messageBundle = this.bundles.get(locale)\n messageBundle.appendFromJSON(messageJSON)\n } else {\n messageBundle = new MessageBundle(messageJSON, locale, missingTranslationMsgFn)\n this.addMessageBundle(messageBundle)\n if (!this.selectedLocale) {\n // If locale is not defined, set it to the value of the current (and the only one) message bundle\n this.setLocale(locale)\n }\n }\n return this\n }\n\n /**\n * Adds a message bundle to a L10n object. If selected locale is not set, sets it to the locale of the message bundle.\n * This function is chainable.\n *\n * @param {MessageBundle} messageBundle - A message bundle that will be stored within an L10n object.\n * @returns {L10n} - Returns self for chaining.\n */\n addMessageBundle (messageBundle) {\n const locale = messageBundle.locale\n if (this.bundles.has(locale)) {\n this.bundles.get(locale).appendFromBundle(messageBundle)\n } else {\n this.bundles.set(messageBundle.locale, messageBundle)\n if (!this.selectedLocale) {\n // If locale is not defined, set it to the value of the current (and the only one) message bundle\n this.setLocale(messageBundle.locale)\n }\n }\n return this\n }\n\n /**\n * Returns an array of locales supported by the L10n object.\n *\n * @returns {string[]}\n */\n get locales () {\n return Array.from(this.bundles.keys())\n }\n\n /**\n * Returns a message bundle for a currently selected locale\n *\n * @returns {MessageBundle | undefined} A message bundle object or undefined if selectedLocale is not set\n */\n get bundle () {\n return this.bundles.get(this.selectedLocale)\n }\n\n /**\n * Returns a message from a bundle for a current locale.\n * A wrapper for {@link MessageBundle#getMsg}\n *\n * @param {...any} params\n */\n getMsg (...params) {\n return this.bundles.has(this.selectedLocale) ? this.bundles.get(this.selectedLocale).getMsg(...params) : {}\n }\n\n /**\n * Sets, or switches a locale that is currently selected. If message bundle for such locale\n * does not exist, does nothing.\n * This method is chainable.\n *\n * @param {string} locale - A locale to be set as currently selected.\n * @returns {L10n} Reference to self for chaining\n */\n setLocale (locale) {\n if (this.bundles.has(locale)) {\n this.selectedLocale = locale\n }\n return this\n }\n}\n","import Message from '@l10n/message.js'\n// TODO: Deal with situations when message is not available, but is requested\n\n/**\n * Combines messages with the same locale code into a single message bundle.\n */\nexport default class MessageBundle {\n /**\n * Creates a message bundle (a list of messages) for a locale.\n *\n * @param {string | object} messagesJSONorObj - Messages for a locale as a JSON string or as an object.\n * @param {string} locale - A locale code for a message group. IETF language tag format is recommended.\n * @param {Function} missingTranslationMsgFn - A placeholder message that will be shown if translation is not found.\n */\n constructor (messagesJSONorObj, locale, missingTranslationMsgFn = (msgID, locale) => `Missing translation: ${msgID} [${locale}]`) {\n if (!locale) {\n throw new Error('Locale data is missing')\n }\n if (!messagesJSONorObj) {\n throw new Error('Message data is missing')\n }\n\n this._locale = locale\n\n /**\n * A map of message object. The key is a messageID\n *\n * @type {Map}\n * @private\n */\n this._messages = new Map()\n\n this._missingTranslationMsgFn = missingTranslationMsgFn\n\n const messages = (typeof messagesJSONorObj === 'string') ? JSON.parse(messagesJSONorObj) : messagesJSONorObj\n this.append(messages)\n }\n\n /**\n * Appends messages from another bundle to the current message bundle.\n * If message has the same messageID that already exists in the\n * current bundle, it will be overwritten.\n *\n * @param {MessageBundle} messageBundle - A bundle of messages.\n */\n appendFromBundle (messageBundle) {\n for (const key of messageBundle.messageIds) {\n this._messages.set(key, messageBundle.getMessageObject(key))\n }\n }\n\n /**\n * Appends a series of messages to the bundle\n *\n * @param {string} messagesJSON - Messages as a JSON string or as a parsed JSON object\n */\n appendFromJSON (messagesJSON) {\n const messages = (typeof messagesJSON === 'string') ? JSON.parse(messagesJSON) : messagesJSON\n this.append(messages)\n }\n\n /**\n * Appends a series of messages from an object. Object properties are message names, and\n * values are message objects. If appended message has the same key as en existing one,\n * an existing message will be overwritten.\n *\n * @param {object} messages - An object containing messages.\n */\n append (messages) {\n for (const [key, messageObj] of Object.entries(messages)) {\n const message = new Message(messageObj, this._locale)\n this._messages.set(key, message)\n }\n }\n\n /**\n * Returns a list of message IDs that exist in a bundle.\n *\n * @returns {string[]}\n */\n get messageIds () {\n return Array.from(this._messages.keys())\n }\n\n /**\n * Checks if message with a given message ID exists among the translated messages.\n *\n * @param {string} messageID - A message ID of a message to be checked\n * @returns {boolean} True if message is present, false otherwise\n */\n hasMsg (messageID) {\n return this._messages.has(messageID)\n }\n\n /**\n * Returns a (formatted) message for a message ID provided.\n *\n * @see {@link Message#getMsg}\n * @param {string} messageID - An ID of a message.\n * @param {object} formatOptions - Options that can be used for message formatting in the following format:\n * {\n * paramOneName: paramOneValue,\n * paramTwoName: paramTwoValue\n * }.\n * @param {object} options - An object with the following possible options:\n * {boolean} passthrough - If true and a translation for a given message ID is not found, will return\n * an original `messageID` string. Otherwise will return an error message if\n * a translation is missing.\n * @returns {string} A formatted message. If message not found, returns a message that contains an error text.\n */\n getMsg (messageID, formatOptions = undefined, options = {}) {\n const defaultOptions = {\n passthrough: false\n }\n options = Object.assign(defaultOptions, options)\n if (this.hasMsg(messageID)) {\n return this._messages.get(messageID).getMsg(formatOptions)\n } else {\n // If message with the ID provided is not in translation data, generate a warning.\n return options.passthrough ? messageID : `\"${messageID}\" is not in translation data for ${this._locale}`\n }\n }\n\n /**\n * A wrapper around `get()` with a `passthrough` parameter set to `true`.\n *\n * @see {@link MessageBundle#getMsg} for more information.\n * @param messageID\n * @param formatOptions\n * @param options\n * @returns {string}\n */\n getText (messageID, formatOptions, options = {}) {\n options.passthrough = true\n return this.getMsg(messageID, formatOptions, options)\n }\n\n /**\n * Returns an abbreviated version of a message for a message ID provided.\n *\n * @see {@link Message#getAbbr}\n * @param messageID - An ID of a message.\n * @param formatOptions - Options that can be used for message formatting in the same order\n * as they are defined in a translation source file.\n * @returns {string} An abbreviated, and possibly formatted, message. If abbreviated message not found,\n * returns an original message text.\n */\n getAbbr (messageID, formatOptions = undefined) {\n if (this.hasMsg(messageID)) {\n return this._messages.get(messageID).getAbbr(formatOptions)\n } else {\n // If message with the ID provided is not in translation data, generate a warning.\n return this._missingTranslationMsgFn(messageID, this._locale)\n }\n }\n\n /**\n * Returns a Message object for a given message ID.\n *\n * @param {string} messageID - A message ID of a message object to be retrieved..\n * @returns {Message} A message object.\n */\n getMessageObject (messageID) {\n return this.hasMsg(messageID) ? this._messages.get(messageID) : null\n }\n\n /**\n * Returns a locale of a current message bundle.\n *\n * @returns {string} A locale of this message bundle.\n */\n get locale () {\n return this._locale\n }\n}\n","import IntlMessageFormat from 'intl-messageformat'\n\n/**\n * Represents a single message object\n */\nexport default class Message {\n /**\n * Creates a new Message object.\n *\n * @param {object} message - A message object as read from JSON file.\n * @param {string} message.name - A message string.\n * @param {string[]} [message.params] - A list of message parameters (optional).\n * @param {string} [message.abbr] - Message abbreviation (optional).\n * @param {string} locale - A message's locale.\n */\n constructor (message, locale) {\n if (!locale) {\n throw new Error('Locale data is missing')\n }\n if (!message) {\n throw new Error('Message data is missing')\n }\n\n this.message = 'Message text is not defined in translation data' // Message format string or text\n this.params = [] // Message parameters\n\n this.locale = locale\n for (const key of Object.keys(message)) {\n this[key] = message[key]\n }\n\n this.formatFunc = new IntlMessageFormat(this.message, this.locale)\n this.abbrFunc = new IntlMessageFormat(this.abbr || this.message, this.locale)\n }\n\n /**\n * Whether this message has any parameters or not.\n *\n * @returns {boolean} True if message has any parameters, false otherwise.\n */\n get hasParameters () {\n return Boolean(this.params.length > 0)\n }\n\n /**\n * Returns a formatted version of a message (if message has parameters) or\n * a message text (if parameters do not exist for a message).\n *\n * @param {object} formatOptions - Options that can be used for message formatting in the following format:\n * {\n * paramOneName: paramOneValue,\n * paramTwoName: paramTwoValue\n * }.\n * @returns {string} A formatted message text\n */\n getMsg (formatOptions) {\n if (this.hasParameters && !this.formatFunc) {\n throw new Error(`A message with parameters ${this.message} requires a format function`)\n }\n return !this.hasParameters ? this.message : this.formatFunc.format(formatOptions)\n }\n\n /**\n * Returns an abbreviated version of a message (if defined) or a message itself otherwise.\n *\n * @param {object} formatOptions - Options that can be used for message formatting in the following format:\n * {\n * paramOneName: paramOneValue,\n * paramTwoName: paramTwoValue\n * }.\n * @returns {string} Abbreviated or full message text.\n */\n getAbbr (formatOptions) {\n return !this.hasParameters ? this.abbrFunc.format() : this.abbrFunc.format(formatOptions)\n }\n}\n","!function webpackUniversalModuleDefinition(e,s){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=s();else if(\"function\"==typeof define&&define.amd)define([],s);else{var t=s();for(var r in t)(\"object\"==typeof exports?exports:e)[r]=t[r]}}(window,(function(){return function(e){var s={};function __webpack_require__(t){if(s[t])return s[t].exports;var r=s[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,__webpack_require__),r.l=!0,r.exports}return __webpack_require__.m=e,__webpack_require__.c=s,__webpack_require__.d=function(e,s,t){__webpack_require__.o(e,s)||Object.defineProperty(e,s,{enumerable:!0,get:t})},__webpack_require__.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},__webpack_require__.t=function(e,s){if(1&s&&(e=__webpack_require__(e)),8&s)return e;if(4&s&&\"object\"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(__webpack_require__.r(t),Object.defineProperty(t,\"default\",{enumerable:!0,value:e}),2&s&&\"string\"!=typeof e)for(var r in e)__webpack_require__.d(t,r,function(s){return e[s]}.bind(null,r));return t},__webpack_require__.n=function(e){var s=e&&e.__esModule?function getDefault(){return e.default}:function getModuleExports(){return e};return __webpack_require__.d(s,\"a\",s),s},__webpack_require__.o=function(e,s){return Object.prototype.hasOwnProperty.call(e,s)},__webpack_require__.p=\"\",__webpack_require__(__webpack_require__.s=0)}([function(e,s,t){\"use strict\";t.r(s),t.d(s,\"MessagingService\",(function(){return messaging_service_MessagingService})),t.d(s,\"WindowIframeDestination\",(function(){return window_iframe_destination_WindowIframeDestination})),t.d(s,\"RequestMessage\",(function(){return request_message_RequestMessage})),t.d(s,\"ResponseMessage\",(function(){return response_message_ResponseMessage})),t.d(s,\"CedictDestinationConfig\",(function(){return c})),t.d(s,\"CedictDestinationDevConfig\",(function(){return u}));var r=\"undefined\"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||\"undefined\"!=typeof msCrypto&&\"function\"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto),n=new Uint8Array(16);function rng(){if(!r)throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");return r(n)}for(var i=[],o=0;o<256;++o)i[o]=(o+256).toString(16).substr(1);var a=function bytesToUuid(e,s){var t=s||0,r=i;return[r[e[t++]],r[e[t++]],r[e[t++]],r[e[t++]],\"-\",r[e[t++]],r[e[t++]],\"-\",r[e[t++]],r[e[t++]],\"-\",r[e[t++]],r[e[t++]],\"-\",r[e[t++]],r[e[t++]],r[e[t++]],r[e[t++]],r[e[t++]],r[e[t++]]].join(\"\")};var d=function v4(e,s,t){var r=s&&t||0;\"string\"==typeof e&&(s=\"binary\"===e?new Array(16):null,e=null);var n=(e=e||{}).random||(e.rng||rng)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,s)for(var i=0;i<16;++i)s[r+i]=n[i];return s||a(n)};class message_Message{constructor(e={}){this.role=void 0,this.type=message_Message.types.GENERIC,this.ID=d(),this.body=e}static isKnownType(e){return Object.values(message_Message.types).includes(e)}}message_Message.roles={REQUEST:\"Request\",RESPONSE:\"Response\"},message_Message.types={GENERIC:\"ALPHEIOS_MESSAGE\"};class request_message_RequestMessage extends message_Message{constructor(e={}){super(e),this.role=message_Message.roles.REQUEST,this.header={}}}class response_message_ResponseMessage extends message_Message{constructor(e,s={},t=response_message_ResponseMessage.responseCodes.UNDEFINED,{errorCode:r}={}){if(super(s),!e)throw new Error(\"Request is not provided\");if(!e.ID)throw new Error(\"Request has no ID\");if(this.role=message_Message.roles.RESPONSE,this.requestHeader=e.header||{},this.requestID=e.ID,this.responseCode=t,this.errorCode=0,t===response_message_ResponseMessage.responseCodes.ERROR){if(!r)throw new Error(\"An error code must be provided for failed requests\");this.errorCode=r}}static Success(e,s={}){return new this(e,s,response_message_ResponseMessage.responseCodes.SUCCESS)}static Error(e,s,t){return new this(e,s,response_message_ResponseMessage.responseCodes.ERROR,{errorCode:t})}static isResponse(e){return e.role&&e.role===message_Message.roles.RESPONSE&&e.requestHeader&&e.requestID}}response_message_ResponseMessage.responseCodes={SUCCESS:\"Success\",UNDEFINED:\"Undefined\",ERROR:\"Error\"},response_message_ResponseMessage.errorCodes={SERVICE_UNINITIALIZED:1,INITIALIZATION_ERROR:2,UNKNOWN_REQUEST:3,INTERNAL_ERROR:4};class StoredRequest{constructor(){this.resolve=null,this.reject=null,this.promise=new Promise(this.executor.bind(this))}executor(e,s){this.resolve=e,this.reject=s}}let _=new Map;class messaging_service_MessagingService{constructor(e,s=[]){if(!e)throw new Error(messaging_service_MessagingService.errMsgs.NO_NAME);this.name=e,this._messages=new Map,this._destinations=new Map,Array.isArray(s)||(s=[s]),s.forEach(e=>this.registerDestination(e))}static hasService(e){return _.has(e)}static getService(e){return _.get(e)}static createService(e,s=[]){const t=new messaging_service_MessagingService(e,s);return _.set(e,t),t}static deleteService(e){return _.delete(e)}registerDestination(e){if(this._destinations.has(e.name))throw new Error(\"Destination already exists\");this._destinations.set(e.name,e),e.ableToSend&&e.registerResponseCallback(this.dispatchMessage.bind(this))}updateDestination(e){if(!this._destinations.has(e.name))throw new Error(\"Cannot update a destination that does not exist\");this._destinations.get(e.name).deregister(),this._destinations.set(e.name,e),e.ableToSend&&e.registerResponseCallback(this.dispatchMessage.bind(this))}dispatchMessage(e){if(!message_Message.isKnownType(e.type))return;if(!response_message_ResponseMessage.isResponse(e))return void console.error(\"A message not following a response format will be ignored:\",e);if(!this._messages.has(e.requestID))return;const s=this._messages.get(e.requestID);window.clearTimeout(s.timeoutID),e.responseCode===response_message_ResponseMessage.responseCodes.ERROR?s.reject(e):s.resolve(e),this._messages.delete(e.requestID)}registerRequest(e,s=1e4){if(this._messages.has(e.ID))throw new Error(`Request with ${e.ID} ID is already registered`);let t=new StoredRequest(e);return this._messages.set(e.ID,t),t.timeoutID=window.setTimeout(s=>{t.reject(new Error(\"Timeout has been expired for a message with request ID \"+e.ID)),this._messages.delete(s)},s),t.promise}sendRequestTo(e,s,t=1e4){if(!e)throw new Error(\"Destination name is not provided\");if(!this._destinations.has(e))throw new Error(\"Unknown destination \"+e);try{this._destinations.get(e).sendRequest(s)}catch(s){throw new Error(`Request to ${e} failed: ${s.message}`)}return this.registerRequest(s,t)}}messaging_service_MessagingService.errMsgs={NO_NAME:\"MessagingService must be created with a name\"};class Destination{constructor({name:e,commModes:s=[Destination.commModes.SEND]}={}){if(!e)throw new Error(Destination.errMsgs.NO_DESTINATION);this.name=e,this.commModes=s,this._responseCallback=null}get ableToSend(){return this.commModes.includes(Destination.commModes.SEND)}get ableToReceive(){return this.commModes.includes(Destination.commModes.RECEIVE)}deregister(){throw new Error(Destination.errMsgs.DEREGISTER_NOT_DEFINED)}}Destination.commModes={SEND:\"Send\",RECEIVE:\"Receive\"},Destination.errMsgs={NO_DESTINATION:\"Destination name is missing\",DEREGISTER_NOT_DEFINED:\"Deregister method must be defined in a subclass\"};class window_iframe_destination_WindowIframeDestination extends Destination{constructor({name:e,commModes:s,targetURL:t,targetIframeID:r,receiverCB:n}={}){if(super({name:e,commModes:s}),this._targetURL=null,this._targetIframeID=null,this._registeredRequestHandler=null,this._registeredResponseHandler=null,this.ableToSend){if(!t)throw new Error(window_iframe_destination_WindowIframeDestination.errMsgs.NO_TARGET_URL);if(!r)throw new Error(window_iframe_destination_WindowIframeDestination.errMsgs.NO_TARGET_IFRAME_ID);this._targetURL=t,this._targetIframeID=r}if(this.ableToReceive){if(!n)throw new Error(window_iframe_destination_WindowIframeDestination.errMsgs.NO_RECEIVER_CB);this._registeredRequestHandler=this._requestHandler.bind(this,n),window.addEventListener(\"message\",this._registeredRequestHandler,!1)}}registerResponseCallback(e){this._registeredResponseHandler=this._responseHandler.bind(this),window.addEventListener(\"message\",this._registeredResponseHandler,!1),this._responseCallback=e}sendRequest(e){const s=document.querySelector(\"#\"+this._targetIframeID);if(!s)throw new Error(`An #${this._targetIframeID} iframe does not exist in the document`);const t=s.contentWindow;let r=!1;try{r=\"about:blank\"===t.location.href}catch(e){if(!(e instanceof DOMException))throw e}if(r)throw new Error(`Target document ${this._targetURL} is not loaded yet`);try{t.postMessage(e,this._targetURL)}catch(s){if(!(s instanceof DOMException&&\"DataCloneError\"===s.name))throw s;console.warn(\"Request that does not confirm to the structured clone algorithm cannot be sent, will try to convert it to a plain object and send again\"),e.body=window_iframe_destination_WindowIframeDestination._toPostable(e.body),t.postMessage(e,this._targetURL)}}sendResponse(e){try{window.parent.postMessage(e,e.requestHeader.origin)}catch(s){if(!(s instanceof DOMException&&\"DataCloneError\"===s.name))throw s;console.warn(\"Response that does not confirm to the structured clone algorithm cannot be sent, will try to convert it to a plain object and send again\"),e.body=window_iframe_destination_WindowIframeDestination._toPostable(e.body),window.parent.postMessage(e,e.requestHeader.origin)}}_requestHandler(e,s){if(!window_iframe_destination_WindowIframeDestination._isSupportedEvent(s))return;let t=s.data;t.header.origin=s.origin,e(t,this.sendResponse.bind(this))}_responseHandler(e){if(!window_iframe_destination_WindowIframeDestination._isSupportedEvent(e))return;const s=e.data;this._responseCallback&&this._responseCallback(s)}static _isSupportedEvent(e){return Boolean(e&&e.data&&e.data.type&&message_Message.isKnownType(e.data.type))}deregister(){this._registeredResponseHandler&&(window.removeEventListener(\"message\",this._registeredResponseHandler,!1),this._registeredResponseHandler=null),this._registeredRequestHandler||(window.removeEventListener(\"message\",this._registeredRequestHandler,!1),this._registeredRequestHandler=null)}static _toPostable(e){let s;return s=e instanceof Error?{name:e.name,message:e.message}:JSON.parse(JSON.stringify(e)),s}}window_iframe_destination_WindowIframeDestination.errMsgs={NO_TARGET_URL:\"Target URL is not provided\",NO_TARGET_IFRAME_ID:\"Target iframe ID is not provided\",NO_RECEIVER_CB:\"A receiver callback must be provided for a destination in the RECEIVE communication mode\"};const c={name:\"cedict\",targetURL:\"https://lexis-dev.alpheios.net\",targetIframeID:\"alpheios-lexis-cs\"},u={name:\"cedict\",targetURL:\"https://lexis-dev.alpheios.net/index-dev.html\",targetIframeID:\"alpheios-lexis-cs\"}}])}));","\n/**\n * Expose `Emitter`.\n */\n\nmodule.exports = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks[event] = this._callbacks[event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n var self = this;\n this._callbacks = this._callbacks || {};\n\n function on() {\n self.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks[event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks[event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n var args = [].slice.call(arguments, 1)\n , callbacks = this._callbacks[event];\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks[event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","//\n// Main\n//\n\nfunction memoize (fn, options) {\n var cache = options && options.cache\n ? options.cache\n : cacheDefault\n\n var serializer = options && options.serializer\n ? options.serializer\n : serializerDefault\n\n var strategy = options && options.strategy\n ? options.strategy\n : strategyDefault\n\n return strategy(fn, {\n cache: cache,\n serializer: serializer\n })\n}\n\n//\n// Strategy\n//\n\nfunction isPrimitive (value) {\n return value == null || typeof value === 'number' || typeof value === 'boolean' // || typeof value === \"string\" 'unsafe' primitive for our needs\n}\n\nfunction monadic (fn, cache, serializer, arg) {\n var cacheKey = isPrimitive(arg) ? arg : serializer(arg)\n\n var computedValue = cache.get(cacheKey)\n if (typeof computedValue === 'undefined') {\n computedValue = fn.call(this, arg)\n cache.set(cacheKey, computedValue)\n }\n\n return computedValue\n}\n\nfunction variadic (fn, cache, serializer) {\n var args = Array.prototype.slice.call(arguments, 3)\n var cacheKey = serializer(args)\n\n var computedValue = cache.get(cacheKey)\n if (typeof computedValue === 'undefined') {\n computedValue = fn.apply(this, args)\n cache.set(cacheKey, computedValue)\n }\n\n return computedValue\n}\n\nfunction assemble (fn, context, strategy, cache, serialize) {\n return strategy.bind(\n context,\n fn,\n cache,\n serialize\n )\n}\n\nfunction strategyDefault (fn, options) {\n var strategy = fn.length === 1 ? monadic : variadic\n\n return assemble(\n fn,\n this,\n strategy,\n options.cache.create(),\n options.serializer\n )\n}\n\nfunction strategyVariadic (fn, options) {\n var strategy = variadic\n\n return assemble(\n fn,\n this,\n strategy,\n options.cache.create(),\n options.serializer\n )\n}\n\nfunction strategyMonadic (fn, options) {\n var strategy = monadic\n\n return assemble(\n fn,\n this,\n strategy,\n options.cache.create(),\n options.serializer\n )\n}\n\n//\n// Serializer\n//\n\nfunction serializerDefault () {\n return JSON.stringify(arguments)\n}\n\n//\n// Cache\n//\n\nfunction ObjectWithoutPrototypeCache () {\n this.cache = Object.create(null)\n}\n\nObjectWithoutPrototypeCache.prototype.has = function (key) {\n return (key in this.cache)\n}\n\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n return this.cache[key]\n}\n\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n this.cache[key] = value\n}\n\nvar cacheDefault = {\n create: function create () {\n return new ObjectWithoutPrototypeCache()\n }\n}\n\n//\n// API\n//\n\nmodule.exports = memoize\nmodule.exports.strategies = {\n variadic: strategyVariadic,\n monadic: strategyMonadic\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { IntlMessageFormat } from './src/core';\nexport * from './src/formatters';\nexport * from './src/core';\nexport * from './src/error';\nexport default IntlMessageFormat;\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { __assign, __spreadArray } from \"tslib\";\nimport { parse } from '@formatjs/icu-messageformat-parser';\nimport * as memoize from 'fast-memoize';\nimport { formatToParts, PART_TYPE, } from './formatters';\n// -- MessageFormat --------------------------------------------------------\nfunction mergeConfig(c1, c2) {\n if (!c2) {\n return c1;\n }\n return __assign(__assign(__assign({}, (c1 || {})), (c2 || {})), Object.keys(c1).reduce(function (all, k) {\n all[k] = __assign(__assign({}, c1[k]), (c2[k] || {}));\n return all;\n }, {}));\n}\nfunction mergeConfigs(defaultConfig, configs) {\n if (!configs) {\n return defaultConfig;\n }\n return Object.keys(defaultConfig).reduce(function (all, k) {\n all[k] = mergeConfig(defaultConfig[k], configs[k]);\n return all;\n }, __assign({}, defaultConfig));\n}\nfunction createFastMemoizeCache(store) {\n return {\n create: function () {\n return {\n has: function (key) {\n return key in store;\n },\n get: function (key) {\n return store[key];\n },\n set: function (key, value) {\n store[key] = value;\n },\n };\n },\n };\n}\n// @ts-ignore this is to deal with rollup's default import shenanigans\nvar _memoizeIntl = memoize.default || memoize;\nvar memoizeIntl = _memoizeIntl;\nfunction createDefaultFormatters(cache) {\n if (cache === void 0) { cache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n }; }\n return {\n getNumberFormat: memoizeIntl(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.number),\n strategy: memoizeIntl.strategies.variadic,\n }),\n getDateTimeFormat: memoizeIntl(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.dateTime),\n strategy: memoizeIntl.strategies.variadic,\n }),\n getPluralRules: memoizeIntl(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.pluralRules),\n strategy: memoizeIntl.strategies.variadic,\n }),\n };\n}\nvar IntlMessageFormat = /** @class */ (function () {\n function IntlMessageFormat(message, locales, overrideFormats, opts) {\n var _this = this;\n if (locales === void 0) { locales = IntlMessageFormat.defaultLocale; }\n this.formatterCache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n };\n this.format = function (values) {\n var parts = _this.formatToParts(values);\n // Hot path for straight simple msg translations\n if (parts.length === 1) {\n return parts[0].value;\n }\n var result = parts.reduce(function (all, part) {\n if (!all.length ||\n part.type !== PART_TYPE.literal ||\n typeof all[all.length - 1] !== 'string') {\n all.push(part.value);\n }\n else {\n all[all.length - 1] += part.value;\n }\n return all;\n }, []);\n if (result.length <= 1) {\n return result[0] || '';\n }\n return result;\n };\n this.formatToParts = function (values) {\n return formatToParts(_this.ast, _this.locales, _this.formatters, _this.formats, values, undefined, _this.message);\n };\n this.resolvedOptions = function () { return ({\n locale: Intl.NumberFormat.supportedLocalesOf(_this.locales)[0],\n }); };\n this.getAst = function () { return _this.ast; };\n if (typeof message === 'string') {\n this.message = message;\n if (!IntlMessageFormat.__parse) {\n throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');\n }\n // Parse string messages into an AST.\n this.ast = IntlMessageFormat.__parse(message, {\n ignoreTag: opts === null || opts === void 0 ? void 0 : opts.ignoreTag,\n });\n }\n else {\n this.ast = message;\n }\n if (!Array.isArray(this.ast)) {\n throw new TypeError('A message must be provided as a String or AST.');\n }\n // Creates a new object with the specified `formats` merged with the default\n // formats.\n this.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);\n // Defined first because it's used to build the format pattern.\n this.locales = locales;\n this.formatters =\n (opts && opts.formatters) || createDefaultFormatters(this.formatterCache);\n }\n Object.defineProperty(IntlMessageFormat, \"defaultLocale\", {\n get: function () {\n if (!IntlMessageFormat.memoizedDefaultLocale) {\n IntlMessageFormat.memoizedDefaultLocale = new Intl.NumberFormat().resolvedOptions().locale;\n }\n return IntlMessageFormat.memoizedDefaultLocale;\n },\n enumerable: false,\n configurable: true\n });\n IntlMessageFormat.memoizedDefaultLocale = null;\n IntlMessageFormat.__parse = parse;\n // Default format options used as the prototype of the `formats` provided to the\n // constructor. These are used when constructing the internal Intl.NumberFormat\n // and Intl.DateTimeFormat instances.\n IntlMessageFormat.formats = {\n number: {\n currency: {\n style: 'currency',\n },\n percent: {\n style: 'percent',\n },\n },\n date: {\n short: {\n month: 'numeric',\n day: 'numeric',\n year: '2-digit',\n },\n medium: {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n },\n long: {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n full: {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n },\n time: {\n short: {\n hour: 'numeric',\n minute: 'numeric',\n },\n medium: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n long: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n full: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n },\n };\n return IntlMessageFormat;\n}());\nexport { IntlMessageFormat };\n","import { __extends } from \"tslib\";\nexport var ErrorCode;\n(function (ErrorCode) {\n // When we have a placeholder but no value to format\n ErrorCode[\"MISSING_VALUE\"] = \"MISSING_VALUE\";\n // When value supplied is invalid\n ErrorCode[\"INVALID_VALUE\"] = \"INVALID_VALUE\";\n // When we need specific Intl API but it's not available\n ErrorCode[\"MISSING_INTL_API\"] = \"MISSING_INTL_API\";\n})(ErrorCode || (ErrorCode = {}));\nvar FormatError = /** @class */ (function (_super) {\n __extends(FormatError, _super);\n function FormatError(msg, code, originalMessage) {\n var _this = _super.call(this, msg) || this;\n _this.code = code;\n _this.originalMessage = originalMessage;\n return _this;\n }\n FormatError.prototype.toString = function () {\n return \"[formatjs Error: \" + this.code + \"] \" + this.message;\n };\n return FormatError;\n}(Error));\nexport { FormatError };\nvar InvalidValueError = /** @class */ (function (_super) {\n __extends(InvalidValueError, _super);\n function InvalidValueError(variableId, value, options, originalMessage) {\n return _super.call(this, \"Invalid values for \\\"\" + variableId + \"\\\": \\\"\" + value + \"\\\". Options are \\\"\" + Object.keys(options).join('\", \"') + \"\\\"\", ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueError;\n}(FormatError));\nexport { InvalidValueError };\nvar InvalidValueTypeError = /** @class */ (function (_super) {\n __extends(InvalidValueTypeError, _super);\n function InvalidValueTypeError(value, type, originalMessage) {\n return _super.call(this, \"Value for \\\"\" + value + \"\\\" must be of type \" + type, ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueTypeError;\n}(FormatError));\nexport { InvalidValueTypeError };\nvar MissingValueError = /** @class */ (function (_super) {\n __extends(MissingValueError, _super);\n function MissingValueError(variableId, originalMessage) {\n return _super.call(this, \"The intl string context variable \\\"\" + variableId + \"\\\" was not provided to the string \\\"\" + originalMessage + \"\\\"\", ErrorCode.MISSING_VALUE, originalMessage) || this;\n }\n return MissingValueError;\n}(FormatError));\nexport { MissingValueError };\n","import { isArgumentElement, isDateElement, isDateTimeSkeleton, isLiteralElement, isNumberElement, isNumberSkeleton, isPluralElement, isPoundElement, isSelectElement, isTimeElement, isTagElement, } from '@formatjs/icu-messageformat-parser';\nimport { MissingValueError, InvalidValueError, ErrorCode, FormatError, InvalidValueTypeError, } from './error';\nexport var PART_TYPE;\n(function (PART_TYPE) {\n PART_TYPE[PART_TYPE[\"literal\"] = 0] = \"literal\";\n PART_TYPE[PART_TYPE[\"object\"] = 1] = \"object\";\n})(PART_TYPE || (PART_TYPE = {}));\nfunction mergeLiteral(parts) {\n if (parts.length < 2) {\n return parts;\n }\n return parts.reduce(function (all, part) {\n var lastPart = all[all.length - 1];\n if (!lastPart ||\n lastPart.type !== PART_TYPE.literal ||\n part.type !== PART_TYPE.literal) {\n all.push(part);\n }\n else {\n lastPart.value += part.value;\n }\n return all;\n }, []);\n}\nexport function isFormatXMLElementFn(el) {\n return typeof el === 'function';\n}\n// TODO(skeleton): add skeleton support\nexport function formatToParts(els, locales, formatters, formats, values, currentPluralValue, \n// For debugging\noriginalMessage) {\n // Hot path for straight simple msg translations\n if (els.length === 1 && isLiteralElement(els[0])) {\n return [\n {\n type: PART_TYPE.literal,\n value: els[0].value,\n },\n ];\n }\n var result = [];\n for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {\n var el = els_1[_i];\n // Exit early for string parts.\n if (isLiteralElement(el)) {\n result.push({\n type: PART_TYPE.literal,\n value: el.value,\n });\n continue;\n }\n // TODO: should this part be literal type?\n // Replace `#` in plural rules with the actual numeric value.\n if (isPoundElement(el)) {\n if (typeof currentPluralValue === 'number') {\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getNumberFormat(locales).format(currentPluralValue),\n });\n }\n continue;\n }\n var varName = el.value;\n // Enforce that all required values are provided by the caller.\n if (!(values && varName in values)) {\n throw new MissingValueError(varName, originalMessage);\n }\n var value = values[varName];\n if (isArgumentElement(el)) {\n if (!value || typeof value === 'string' || typeof value === 'number') {\n value =\n typeof value === 'string' || typeof value === 'number'\n ? String(value)\n : '';\n }\n result.push({\n type: typeof value === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: value,\n });\n continue;\n }\n // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n if (isDateElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.date[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTimeElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.time[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isNumberElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.number[el.style]\n : isNumberSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n if (style && style.scale) {\n value =\n value *\n (style.scale || 1);\n }\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getNumberFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTagElement(el)) {\n var children = el.children, value_1 = el.value;\n var formatFn = values[value_1];\n if (!isFormatXMLElementFn(formatFn)) {\n throw new InvalidValueTypeError(value_1, 'function', originalMessage);\n }\n var parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);\n var chunks = formatFn(parts.map(function (p) { return p.value; }));\n if (!Array.isArray(chunks)) {\n chunks = [chunks];\n }\n result.push.apply(result, chunks.map(function (c) {\n return {\n type: typeof c === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: c,\n };\n }));\n }\n if (isSelectElement(el)) {\n var opt = el.options[value] || el.options.other;\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));\n continue;\n }\n if (isPluralElement(el)) {\n var opt = el.options[\"=\" + value];\n if (!opt) {\n if (!Intl.PluralRules) {\n throw new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API, originalMessage);\n }\n var rule = formatters\n .getPluralRules(locales, { type: el.pluralType })\n .select(value - (el.offset || 0));\n opt = el.options[rule] || el.options.other;\n }\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el.offset || 0)));\n continue;\n }\n }\n return mergeLiteral(result);\n}\n","/* @license\nPapa Parse\nv5.3.0\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n\n(function(root, factory)\n{\n\t/* globals define */\n\tif (typeof define === 'function' && define.amd)\n\t{\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([], factory);\n\t}\n\telse if (typeof module === 'object' && typeof exports !== 'undefined')\n\t{\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like environments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory();\n\t}\n\telse\n\t{\n\t\t// Browser globals (root is window)\n\t\troot.Papa = factory();\n\t}\n\t// in strict mode we cannot access arguments.callee, so we need a named reference to\n\t// stringify the factory method for the blob worker\n\t// eslint-disable-next-line func-name\n}(this, function moduleFactory()\n{\n\t'use strict';\n\n\tvar global = (function() {\n\t\t// alternative method, similar to `Function('return this')()`\n\t\t// but without using `eval` (which is disabled when\n\t\t// using Content Security Policy).\n\n\t\tif (typeof self !== 'undefined') { return self; }\n\t\tif (typeof window !== 'undefined') { return window; }\n\t\tif (typeof global !== 'undefined') { return global; }\n\n\t\t// When running tests none of the above have been defined\n\t\treturn {};\n\t})();\n\n\n\tfunction getWorkerBlob() {\n\t\tvar URL = global.URL || global.webkitURL || null;\n\t\tvar code = moduleFactory.toString();\n\t\treturn Papa.BLOB_URL || (Papa.BLOB_URL = URL.createObjectURL(new Blob(['(', code, ')();'], {type: 'text/javascript'})));\n\t}\n\n\tvar IS_WORKER = !global.document && !!global.postMessage,\n\t\tIS_PAPA_WORKER = IS_WORKER && /blob:/i.test((global.location || {}).protocol);\n\tvar workers = {}, workerIdCounter = 0;\n\n\tvar Papa = {};\n\n\tPapa.parse = CsvToJson;\n\tPapa.unparse = JsonToCsv;\n\n\tPapa.RECORD_SEP = String.fromCharCode(30);\n\tPapa.UNIT_SEP = String.fromCharCode(31);\n\tPapa.BYTE_ORDER_MARK = '\\ufeff';\n\tPapa.BAD_DELIMITERS = ['\\r', '\\n', '\"', Papa.BYTE_ORDER_MARK];\n\tPapa.WORKERS_SUPPORTED = !IS_WORKER && !!global.Worker;\n\tPapa.NODE_STREAM_INPUT = 1;\n\n\t// Configurable chunk sizes for local and remote files, respectively\n\tPapa.LocalChunkSize = 1024 * 1024 * 10;\t// 10 MB\n\tPapa.RemoteChunkSize = 1024 * 1024 * 5;\t// 5 MB\n\tPapa.DefaultDelimiter = ',';\t\t\t// Used if not specified and detection fails\n\n\t// Exposed for testing and development only\n\tPapa.Parser = Parser;\n\tPapa.ParserHandle = ParserHandle;\n\tPapa.NetworkStreamer = NetworkStreamer;\n\tPapa.FileStreamer = FileStreamer;\n\tPapa.StringStreamer = StringStreamer;\n\tPapa.ReadableStreamStreamer = ReadableStreamStreamer;\n\tif (typeof PAPA_BROWSER_CONTEXT === 'undefined') {\n\t\tPapa.DuplexStreamStreamer = DuplexStreamStreamer;\n\t}\n\n\tif (global.jQuery)\n\t{\n\t\tvar $ = global.jQuery;\n\t\t$.fn.parse = function(options)\n\t\t{\n\t\t\tvar config = options.config || {};\n\t\t\tvar queue = [];\n\n\t\t\tthis.each(function(idx)\n\t\t\t{\n\t\t\t\tvar supported = $(this).prop('tagName').toUpperCase() === 'INPUT'\n\t\t\t\t\t\t\t\t&& $(this).attr('type').toLowerCase() === 'file'\n\t\t\t\t\t\t\t\t&& global.FileReader;\n\n\t\t\t\tif (!supported || !this.files || this.files.length === 0)\n\t\t\t\t\treturn true;\t// continue to next input element\n\n\t\t\t\tfor (var i = 0; i < this.files.length; i++)\n\t\t\t\t{\n\t\t\t\t\tqueue.push({\n\t\t\t\t\t\tfile: this.files[i],\n\t\t\t\t\t\tinputElem: this,\n\t\t\t\t\t\tinstanceConfig: $.extend({}, config)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tparseNextFile();\t// begin parsing\n\t\t\treturn this;\t\t// maintains chainability\n\n\n\t\t\tfunction parseNextFile()\n\t\t\t{\n\t\t\t\tif (queue.length === 0)\n\t\t\t\t{\n\t\t\t\t\tif (isFunction(options.complete))\n\t\t\t\t\t\toptions.complete();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar f = queue[0];\n\n\t\t\t\tif (isFunction(options.before))\n\t\t\t\t{\n\t\t\t\t\tvar returned = options.before(f.file, f.inputElem);\n\n\t\t\t\t\tif (typeof returned === 'object')\n\t\t\t\t\t{\n\t\t\t\t\t\tif (returned.action === 'abort')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terror('AbortError', f.file, f.inputElem, returned.reason);\n\t\t\t\t\t\t\treturn;\t// Aborts all queued files immediately\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (returned.action === 'skip')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfileComplete();\t// parse the next file in the queue, if any\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (typeof returned.config === 'object')\n\t\t\t\t\t\t\tf.instanceConfig = $.extend(f.instanceConfig, returned.config);\n\t\t\t\t\t}\n\t\t\t\t\telse if (returned === 'skip')\n\t\t\t\t\t{\n\t\t\t\t\t\tfileComplete();\t// parse the next file in the queue, if any\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Wrap up the user's complete callback, if any, so that ours also gets executed\n\t\t\t\tvar userCompleteFunc = f.instanceConfig.complete;\n\t\t\t\tf.instanceConfig.complete = function(results)\n\t\t\t\t{\n\t\t\t\t\tif (isFunction(userCompleteFunc))\n\t\t\t\t\t\tuserCompleteFunc(results, f.file, f.inputElem);\n\t\t\t\t\tfileComplete();\n\t\t\t\t};\n\n\t\t\t\tPapa.parse(f.file, f.instanceConfig);\n\t\t\t}\n\n\t\t\tfunction error(name, file, elem, reason)\n\t\t\t{\n\t\t\t\tif (isFunction(options.error))\n\t\t\t\t\toptions.error({name: name}, file, elem, reason);\n\t\t\t}\n\n\t\t\tfunction fileComplete()\n\t\t\t{\n\t\t\t\tqueue.splice(0, 1);\n\t\t\t\tparseNextFile();\n\t\t\t}\n\t\t};\n\t}\n\n\n\tif (IS_PAPA_WORKER)\n\t{\n\t\tglobal.onmessage = workerThreadReceivedMessage;\n\t}\n\n\n\n\n\tfunction CsvToJson(_input, _config)\n\t{\n\t\t_config = _config || {};\n\t\tvar dynamicTyping = _config.dynamicTyping || false;\n\t\tif (isFunction(dynamicTyping)) {\n\t\t\t_config.dynamicTypingFunction = dynamicTyping;\n\t\t\t// Will be filled on first row call\n\t\t\tdynamicTyping = {};\n\t\t}\n\t\t_config.dynamicTyping = dynamicTyping;\n\n\t\t_config.transform = isFunction(_config.transform) ? _config.transform : false;\n\n\t\tif (_config.worker && Papa.WORKERS_SUPPORTED)\n\t\t{\n\t\t\tvar w = newWorker();\n\n\t\t\tw.userStep = _config.step;\n\t\t\tw.userChunk = _config.chunk;\n\t\t\tw.userComplete = _config.complete;\n\t\t\tw.userError = _config.error;\n\n\t\t\t_config.step = isFunction(_config.step);\n\t\t\t_config.chunk = isFunction(_config.chunk);\n\t\t\t_config.complete = isFunction(_config.complete);\n\t\t\t_config.error = isFunction(_config.error);\n\t\t\tdelete _config.worker;\t// prevent infinite loop\n\n\t\t\tw.postMessage({\n\t\t\t\tinput: _input,\n\t\t\t\tconfig: _config,\n\t\t\t\tworkerId: w.id\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\tvar streamer = null;\n\t\tif (_input === Papa.NODE_STREAM_INPUT && typeof PAPA_BROWSER_CONTEXT === 'undefined')\n\t\t{\n\t\t\t// create a node Duplex stream for use\n\t\t\t// with .pipe\n\t\t\tstreamer = new DuplexStreamStreamer(_config);\n\t\t\treturn streamer.getStream();\n\t\t}\n\t\telse if (typeof _input === 'string')\n\t\t{\n\t\t\tif (_config.download)\n\t\t\t\tstreamer = new NetworkStreamer(_config);\n\t\t\telse\n\t\t\t\tstreamer = new StringStreamer(_config);\n\t\t}\n\t\telse if (_input.readable === true && isFunction(_input.read) && isFunction(_input.on))\n\t\t{\n\t\t\tstreamer = new ReadableStreamStreamer(_config);\n\t\t}\n\t\telse if ((global.File && _input instanceof File) || _input instanceof Object)\t// ...Safari. (see issue #106)\n\t\t\tstreamer = new FileStreamer(_config);\n\n\t\treturn streamer.stream(_input);\n\t}\n\n\n\n\n\n\n\tfunction JsonToCsv(_input, _config)\n\t{\n\t\t// Default configuration\n\n\t\t/** whether to surround every datum with quotes */\n\t\tvar _quotes = false;\n\n\t\t/** whether to write headers */\n\t\tvar _writeHeader = true;\n\n\t\t/** delimiting character(s) */\n\t\tvar _delimiter = ',';\n\n\t\t/** newline character(s) */\n\t\tvar _newline = '\\r\\n';\n\n\t\t/** quote character */\n\t\tvar _quoteChar = '\"';\n\n\t\t/** escaped quote character, either \"\" or \" */\n\t\tvar _escapedQuote = _quoteChar + _quoteChar;\n\n\t\t/** whether to skip empty lines */\n\t\tvar _skipEmptyLines = false;\n\n\t\t/** the columns (keys) we expect when we unparse objects */\n\t\tvar _columns = null;\n\n\t\t/** whether to prevent outputting cells that can be parsed as formulae by spreadsheet software (Excel and LibreOffice) */\n\t\tvar _escapeFormulae = false;\n\n\t\tunpackConfig();\n\n\t\tvar quoteCharRegex = new RegExp(escapeRegExp(_quoteChar), 'g');\n\n\t\tif (typeof _input === 'string')\n\t\t\t_input = JSON.parse(_input);\n\n\t\tif (Array.isArray(_input))\n\t\t{\n\t\t\tif (!_input.length || Array.isArray(_input[0]))\n\t\t\t\treturn serialize(null, _input, _skipEmptyLines);\n\t\t\telse if (typeof _input[0] === 'object')\n\t\t\t\treturn serialize(_columns || objectKeys(_input[0]), _input, _skipEmptyLines);\n\t\t}\n\t\telse if (typeof _input === 'object')\n\t\t{\n\t\t\tif (typeof _input.data === 'string')\n\t\t\t\t_input.data = JSON.parse(_input.data);\n\n\t\t\tif (Array.isArray(_input.data))\n\t\t\t{\n\t\t\t\tif (!_input.fields)\n\t\t\t\t\t_input.fields = _input.meta && _input.meta.fields;\n\n\t\t\t\tif (!_input.fields)\n\t\t\t\t\t_input.fields = Array.isArray(_input.data[0])\n\t\t\t\t\t\t? _input.fields\n\t\t\t\t\t\t: objectKeys(_input.data[0]);\n\n\t\t\t\tif (!(Array.isArray(_input.data[0])) && typeof _input.data[0] !== 'object')\n\t\t\t\t\t_input.data = [_input.data];\t// handles input like [1,2,3] or ['asdf']\n\t\t\t}\n\n\t\t\treturn serialize(_input.fields || [], _input.data || [], _skipEmptyLines);\n\t\t}\n\n\t\t// Default (any valid paths should return before this)\n\t\tthrow new Error('Unable to serialize unrecognized input');\n\n\n\t\tfunction unpackConfig()\n\t\t{\n\t\t\tif (typeof _config !== 'object')\n\t\t\t\treturn;\n\n\t\t\tif (typeof _config.delimiter === 'string'\n && !Papa.BAD_DELIMITERS.filter(function(value) { return _config.delimiter.indexOf(value) !== -1; }).length)\n\t\t\t{\n\t\t\t\t_delimiter = _config.delimiter;\n\t\t\t}\n\n\t\t\tif (typeof _config.quotes === 'boolean'\n\t\t\t\t|| typeof _config.quotes === 'function'\n\t\t\t\t|| Array.isArray(_config.quotes))\n\t\t\t\t_quotes = _config.quotes;\n\n\t\t\tif (typeof _config.skipEmptyLines === 'boolean'\n\t\t\t\t|| typeof _config.skipEmptyLines === 'string')\n\t\t\t\t_skipEmptyLines = _config.skipEmptyLines;\n\n\t\t\tif (typeof _config.newline === 'string')\n\t\t\t\t_newline = _config.newline;\n\n\t\t\tif (typeof _config.quoteChar === 'string')\n\t\t\t\t_quoteChar = _config.quoteChar;\n\n\t\t\tif (typeof _config.header === 'boolean')\n\t\t\t\t_writeHeader = _config.header;\n\n\t\t\tif (Array.isArray(_config.columns)) {\n\n\t\t\t\tif (_config.columns.length === 0) throw new Error('Option columns is empty');\n\n\t\t\t\t_columns = _config.columns;\n\t\t\t}\n\n\t\t\tif (_config.escapeChar !== undefined) {\n\t\t\t\t_escapedQuote = _config.escapeChar + _quoteChar;\n\t\t\t}\n\n\t\t\tif (typeof _config.escapeFormulae === 'boolean')\n\t\t\t\t_escapeFormulae = _config.escapeFormulae;\n\t\t}\n\n\n\t\t/** Turns an object's keys into an array */\n\t\tfunction objectKeys(obj)\n\t\t{\n\t\t\tif (typeof obj !== 'object')\n\t\t\t\treturn [];\n\t\t\tvar keys = [];\n\t\t\tfor (var key in obj)\n\t\t\t\tkeys.push(key);\n\t\t\treturn keys;\n\t\t}\n\n\t\t/** The double for loop that iterates the data and writes out a CSV string including header row */\n\t\tfunction serialize(fields, data, skipEmptyLines)\n\t\t{\n\t\t\tvar csv = '';\n\n\t\t\tif (typeof fields === 'string')\n\t\t\t\tfields = JSON.parse(fields);\n\t\t\tif (typeof data === 'string')\n\t\t\t\tdata = JSON.parse(data);\n\n\t\t\tvar hasHeader = Array.isArray(fields) && fields.length > 0;\n\t\t\tvar dataKeyedByField = !(Array.isArray(data[0]));\n\n\t\t\t// If there a header row, write it first\n\t\t\tif (hasHeader && _writeHeader)\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < fields.length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (i > 0)\n\t\t\t\t\t\tcsv += _delimiter;\n\t\t\t\t\tcsv += safe(fields[i], i);\n\t\t\t\t}\n\t\t\t\tif (data.length > 0)\n\t\t\t\t\tcsv += _newline;\n\t\t\t}\n\n\t\t\t// Then write out the data\n\t\t\tfor (var row = 0; row < data.length; row++)\n\t\t\t{\n\t\t\t\tvar maxCol = hasHeader ? fields.length : data[row].length;\n\n\t\t\t\tvar emptyLine = false;\n\t\t\t\tvar nullLine = hasHeader ? Object.keys(data[row]).length === 0 : data[row].length === 0;\n\t\t\t\tif (skipEmptyLines && !hasHeader)\n\t\t\t\t{\n\t\t\t\t\temptyLine = skipEmptyLines === 'greedy' ? data[row].join('').trim() === '' : data[row].length === 1 && data[row][0].length === 0;\n\t\t\t\t}\n\t\t\t\tif (skipEmptyLines === 'greedy' && hasHeader) {\n\t\t\t\t\tvar line = [];\n\t\t\t\t\tfor (var c = 0; c < maxCol; c++) {\n\t\t\t\t\t\tvar cx = dataKeyedByField ? fields[c] : c;\n\t\t\t\t\t\tline.push(data[row][cx]);\n\t\t\t\t\t}\n\t\t\t\t\temptyLine = line.join('').trim() === '';\n\t\t\t\t}\n\t\t\t\tif (!emptyLine)\n\t\t\t\t{\n\t\t\t\t\tfor (var col = 0; col < maxCol; col++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (col > 0 && !nullLine)\n\t\t\t\t\t\t\tcsv += _delimiter;\n\t\t\t\t\t\tvar colIdx = hasHeader && dataKeyedByField ? fields[col] : col;\n\t\t\t\t\t\tcsv += safe(data[row][colIdx], col);\n\t\t\t\t\t}\n\t\t\t\t\tif (row < data.length - 1 && (!skipEmptyLines || (maxCol > 0 && !nullLine)))\n\t\t\t\t\t{\n\t\t\t\t\t\tcsv += _newline;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn csv;\n\t\t}\n\n\t\t/** Encloses a value around quotes if needed (makes a value safe for CSV insertion) */\n\t\tfunction safe(str, col)\n\t\t{\n\t\t\tif (typeof str === 'undefined' || str === null)\n\t\t\t\treturn '';\n\n\t\t\tif (str.constructor === Date)\n\t\t\t\treturn JSON.stringify(str).slice(1, 25);\n\n\t\t\tif (_escapeFormulae === true && typeof str === \"string\" && (str.match(/^[=+\\-@].*$/) !== null)) {\n\t\t\t\tstr = \"'\" + str;\n\t\t\t}\n\n\t\t\tvar escapedQuoteStr = str.toString().replace(quoteCharRegex, _escapedQuote);\n\n\t\t\tvar needsQuotes = (typeof _quotes === 'boolean' && _quotes)\n\t\t\t\t\t\t\t|| (typeof _quotes === 'function' && _quotes(str, col))\n\t\t\t\t\t\t\t|| (Array.isArray(_quotes) && _quotes[col])\n\t\t\t\t\t\t\t|| hasAny(escapedQuoteStr, Papa.BAD_DELIMITERS)\n\t\t\t\t\t\t\t|| escapedQuoteStr.indexOf(_delimiter) > -1\n\t\t\t\t\t\t\t|| escapedQuoteStr.charAt(0) === ' '\n\t\t\t\t\t\t\t|| escapedQuoteStr.charAt(escapedQuoteStr.length - 1) === ' ';\n\n\t\t\treturn needsQuotes ? _quoteChar + escapedQuoteStr + _quoteChar : escapedQuoteStr;\n\t\t}\n\n\t\tfunction hasAny(str, substrings)\n\t\t{\n\t\t\tfor (var i = 0; i < substrings.length; i++)\n\t\t\t\tif (str.indexOf(substrings[i]) > -1)\n\t\t\t\t\treturn true;\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/** ChunkStreamer is the base prototype for various streamer implementations. */\n\tfunction ChunkStreamer(config)\n\t{\n\t\tthis._handle = null;\n\t\tthis._finished = false;\n\t\tthis._completed = false;\n\t\tthis._halted = false;\n\t\tthis._input = null;\n\t\tthis._baseIndex = 0;\n\t\tthis._partialLine = '';\n\t\tthis._rowCount = 0;\n\t\tthis._start = 0;\n\t\tthis._nextChunk = null;\n\t\tthis.isFirstChunk = true;\n\t\tthis._completeResults = {\n\t\t\tdata: [],\n\t\t\terrors: [],\n\t\t\tmeta: {}\n\t\t};\n\t\treplaceConfig.call(this, config);\n\n\t\tthis.parseChunk = function(chunk, isFakeChunk)\n\t\t{\n\t\t\t// First chunk pre-processing\n\t\t\tif (this.isFirstChunk && isFunction(this._config.beforeFirstChunk))\n\t\t\t{\n\t\t\t\tvar modifiedChunk = this._config.beforeFirstChunk(chunk);\n\t\t\t\tif (modifiedChunk !== undefined)\n\t\t\t\t\tchunk = modifiedChunk;\n\t\t\t}\n\t\t\tthis.isFirstChunk = false;\n\t\t\tthis._halted = false;\n\n\t\t\t// Rejoin the line we likely just split in two by chunking the file\n\t\t\tvar aggregate = this._partialLine + chunk;\n\t\t\tthis._partialLine = '';\n\n\t\t\tvar results = this._handle.parse(aggregate, this._baseIndex, !this._finished);\n\n\t\t\tif (this._handle.paused() || this._handle.aborted()) {\n\t\t\t\tthis._halted = true;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar lastIndex = results.meta.cursor;\n\n\t\t\tif (!this._finished)\n\t\t\t{\n\t\t\t\tthis._partialLine = aggregate.substring(lastIndex - this._baseIndex);\n\t\t\t\tthis._baseIndex = lastIndex;\n\t\t\t}\n\n\t\t\tif (results && results.data)\n\t\t\t\tthis._rowCount += results.data.length;\n\n\t\t\tvar finishedIncludingPreview = this._finished || (this._config.preview && this._rowCount >= this._config.preview);\n\n\t\t\tif (IS_PAPA_WORKER)\n\t\t\t{\n\t\t\t\tglobal.postMessage({\n\t\t\t\t\tresults: results,\n\t\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\t\tfinished: finishedIncludingPreview\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if (isFunction(this._config.chunk) && !isFakeChunk)\n\t\t\t{\n\t\t\t\tthis._config.chunk(results, this._handle);\n\t\t\t\tif (this._handle.paused() || this._handle.aborted()) {\n\t\t\t\t\tthis._halted = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresults = undefined;\n\t\t\t\tthis._completeResults = undefined;\n\t\t\t}\n\n\t\t\tif (!this._config.step && !this._config.chunk) {\n\t\t\t\tthis._completeResults.data = this._completeResults.data.concat(results.data);\n\t\t\t\tthis._completeResults.errors = this._completeResults.errors.concat(results.errors);\n\t\t\t\tthis._completeResults.meta = results.meta;\n\t\t\t}\n\n\t\t\tif (!this._completed && finishedIncludingPreview && isFunction(this._config.complete) && (!results || !results.meta.aborted)) {\n\t\t\t\tthis._config.complete(this._completeResults, this._input);\n\t\t\t\tthis._completed = true;\n\t\t\t}\n\n\t\t\tif (!finishedIncludingPreview && (!results || !results.meta.paused))\n\t\t\t\tthis._nextChunk();\n\n\t\t\treturn results;\n\t\t};\n\n\t\tthis._sendError = function(error)\n\t\t{\n\t\t\tif (isFunction(this._config.error))\n\t\t\t\tthis._config.error(error);\n\t\t\telse if (IS_PAPA_WORKER && this._config.error)\n\t\t\t{\n\t\t\t\tglobal.postMessage({\n\t\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\t\terror: error,\n\t\t\t\t\tfinished: false\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tfunction replaceConfig(config)\n\t\t{\n\t\t\t// Deep-copy the config so we can edit it\n\t\t\tvar configCopy = copy(config);\n\t\t\tconfigCopy.chunkSize = parseInt(configCopy.chunkSize);\t// parseInt VERY important so we don't concatenate strings!\n\t\t\tif (!config.step && !config.chunk)\n\t\t\t\tconfigCopy.chunkSize = null; // disable Range header if not streaming; bad values break IIS - see issue #196\n\t\t\tthis._handle = new ParserHandle(configCopy);\n\t\t\tthis._handle.streamer = this;\n\t\t\tthis._config = configCopy;\t// persist the copy to the caller\n\t\t}\n\t}\n\n\n\tfunction NetworkStreamer(config)\n\t{\n\t\tconfig = config || {};\n\t\tif (!config.chunkSize)\n\t\t\tconfig.chunkSize = Papa.RemoteChunkSize;\n\t\tChunkStreamer.call(this, config);\n\n\t\tvar xhr;\n\n\t\tif (IS_WORKER)\n\t\t{\n\t\t\tthis._nextChunk = function()\n\t\t\t{\n\t\t\t\tthis._readChunk();\n\t\t\t\tthis._chunkLoaded();\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._nextChunk = function()\n\t\t\t{\n\t\t\t\tthis._readChunk();\n\t\t\t};\n\t\t}\n\n\t\tthis.stream = function(url)\n\t\t{\n\t\t\tthis._input = url;\n\t\t\tthis._nextChunk();\t// Starts streaming\n\t\t};\n\n\t\tthis._readChunk = function()\n\t\t{\n\t\t\tif (this._finished)\n\t\t\t{\n\t\t\t\tthis._chunkLoaded();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\txhr = new XMLHttpRequest();\n\n\t\t\tif (this._config.withCredentials)\n\t\t\t{\n\t\t\t\txhr.withCredentials = this._config.withCredentials;\n\t\t\t}\n\n\t\t\tif (!IS_WORKER)\n\t\t\t{\n\t\t\t\txhr.onload = bindFunction(this._chunkLoaded, this);\n\t\t\t\txhr.onerror = bindFunction(this._chunkError, this);\n\t\t\t}\n\n\t\t\txhr.open(this._config.downloadRequestBody ? 'POST' : 'GET', this._input, !IS_WORKER);\n\t\t\t// Headers can only be set when once the request state is OPENED\n\t\t\tif (this._config.downloadRequestHeaders)\n\t\t\t{\n\t\t\t\tvar headers = this._config.downloadRequestHeaders;\n\n\t\t\t\tfor (var headerName in headers)\n\t\t\t\t{\n\t\t\t\t\txhr.setRequestHeader(headerName, headers[headerName]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this._config.chunkSize)\n\t\t\t{\n\t\t\t\tvar end = this._start + this._config.chunkSize - 1;\t// minus one because byte range is inclusive\n\t\t\t\txhr.setRequestHeader('Range', 'bytes=' + this._start + '-' + end);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\txhr.send(this._config.downloadRequestBody);\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tthis._chunkError(err.message);\n\t\t\t}\n\n\t\t\tif (IS_WORKER && xhr.status === 0)\n\t\t\t\tthis._chunkError();\n\t\t};\n\n\t\tthis._chunkLoaded = function()\n\t\t{\n\t\t\tif (xhr.readyState !== 4)\n\t\t\t\treturn;\n\n\t\t\tif (xhr.status < 200 || xhr.status >= 400)\n\t\t\t{\n\t\t\t\tthis._chunkError();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Use chunckSize as it may be a diference on reponse lentgh due to characters with more than 1 byte\n\t\t\tthis._start += this._config.chunkSize ? this._config.chunkSize : xhr.responseText.length;\n\t\t\tthis._finished = !this._config.chunkSize || this._start >= getFileSize(xhr);\n\t\t\tthis.parseChunk(xhr.responseText);\n\t\t};\n\n\t\tthis._chunkError = function(errorMessage)\n\t\t{\n\t\t\tvar errorText = xhr.statusText || errorMessage;\n\t\t\tthis._sendError(new Error(errorText));\n\t\t};\n\n\t\tfunction getFileSize(xhr)\n\t\t{\n\t\t\tvar contentRange = xhr.getResponseHeader('Content-Range');\n\t\t\tif (contentRange === null) { // no content range, then finish!\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\treturn parseInt(contentRange.substring(contentRange.lastIndexOf('/') + 1));\n\t\t}\n\t}\n\tNetworkStreamer.prototype = Object.create(ChunkStreamer.prototype);\n\tNetworkStreamer.prototype.constructor = NetworkStreamer;\n\n\n\tfunction FileStreamer(config)\n\t{\n\t\tconfig = config || {};\n\t\tif (!config.chunkSize)\n\t\t\tconfig.chunkSize = Papa.LocalChunkSize;\n\t\tChunkStreamer.call(this, config);\n\n\t\tvar reader, slice;\n\n\t\t// FileReader is better than FileReaderSync (even in worker) - see http://stackoverflow.com/q/24708649/1048862\n\t\t// But Firefox is a pill, too - see issue #76: https://github.com/mholt/PapaParse/issues/76\n\t\tvar usingAsyncReader = typeof FileReader !== 'undefined';\t// Safari doesn't consider it a function - see issue #105\n\n\t\tthis.stream = function(file)\n\t\t{\n\t\t\tthis._input = file;\n\t\t\tslice = file.slice || file.webkitSlice || file.mozSlice;\n\n\t\t\tif (usingAsyncReader)\n\t\t\t{\n\t\t\t\treader = new FileReader();\t\t// Preferred method of reading files, even in workers\n\t\t\t\treader.onload = bindFunction(this._chunkLoaded, this);\n\t\t\t\treader.onerror = bindFunction(this._chunkError, this);\n\t\t\t}\n\t\t\telse\n\t\t\t\treader = new FileReaderSync();\t// Hack for running in a web worker in Firefox\n\n\t\t\tthis._nextChunk();\t// Starts streaming\n\t\t};\n\n\t\tthis._nextChunk = function()\n\t\t{\n\t\t\tif (!this._finished && (!this._config.preview || this._rowCount < this._config.preview))\n\t\t\t\tthis._readChunk();\n\t\t};\n\n\t\tthis._readChunk = function()\n\t\t{\n\t\t\tvar input = this._input;\n\t\t\tif (this._config.chunkSize)\n\t\t\t{\n\t\t\t\tvar end = Math.min(this._start + this._config.chunkSize, this._input.size);\n\t\t\t\tinput = slice.call(input, this._start, end);\n\t\t\t}\n\t\t\tvar txt = reader.readAsText(input, this._config.encoding);\n\t\t\tif (!usingAsyncReader)\n\t\t\t\tthis._chunkLoaded({ target: { result: txt } });\t// mimic the async signature\n\t\t};\n\n\t\tthis._chunkLoaded = function(event)\n\t\t{\n\t\t\t// Very important to increment start each time before handling results\n\t\t\tthis._start += this._config.chunkSize;\n\t\t\tthis._finished = !this._config.chunkSize || this._start >= this._input.size;\n\t\t\tthis.parseChunk(event.target.result);\n\t\t};\n\n\t\tthis._chunkError = function()\n\t\t{\n\t\t\tthis._sendError(reader.error);\n\t\t};\n\n\t}\n\tFileStreamer.prototype = Object.create(ChunkStreamer.prototype);\n\tFileStreamer.prototype.constructor = FileStreamer;\n\n\n\tfunction StringStreamer(config)\n\t{\n\t\tconfig = config || {};\n\t\tChunkStreamer.call(this, config);\n\n\t\tvar remaining;\n\t\tthis.stream = function(s)\n\t\t{\n\t\t\tremaining = s;\n\t\t\treturn this._nextChunk();\n\t\t};\n\t\tthis._nextChunk = function()\n\t\t{\n\t\t\tif (this._finished) return;\n\t\t\tvar size = this._config.chunkSize;\n\t\t\tvar chunk;\n\t\t\tif(size) {\n\t\t\t\tchunk = remaining.substring(0, size);\n\t\t\t\tremaining = remaining.substring(size);\n\t\t\t} else {\n\t\t\t\tchunk = remaining;\n\t\t\t\tremaining = '';\n\t\t\t}\n\t\t\tthis._finished = !remaining;\n\t\t\treturn this.parseChunk(chunk);\n\t\t};\n\t}\n\tStringStreamer.prototype = Object.create(StringStreamer.prototype);\n\tStringStreamer.prototype.constructor = StringStreamer;\n\n\n\tfunction ReadableStreamStreamer(config)\n\t{\n\t\tconfig = config || {};\n\n\t\tChunkStreamer.call(this, config);\n\n\t\tvar queue = [];\n\t\tvar parseOnData = true;\n\t\tvar streamHasEnded = false;\n\n\t\tthis.pause = function()\n\t\t{\n\t\t\tChunkStreamer.prototype.pause.apply(this, arguments);\n\t\t\tthis._input.pause();\n\t\t};\n\n\t\tthis.resume = function()\n\t\t{\n\t\t\tChunkStreamer.prototype.resume.apply(this, arguments);\n\t\t\tthis._input.resume();\n\t\t};\n\n\t\tthis.stream = function(stream)\n\t\t{\n\t\t\tthis._input = stream;\n\n\t\t\tthis._input.on('data', this._streamData);\n\t\t\tthis._input.on('end', this._streamEnd);\n\t\t\tthis._input.on('error', this._streamError);\n\t\t};\n\n\t\tthis._checkIsFinished = function()\n\t\t{\n\t\t\tif (streamHasEnded && queue.length === 1) {\n\t\t\t\tthis._finished = true;\n\t\t\t}\n\t\t};\n\n\t\tthis._nextChunk = function()\n\t\t{\n\t\t\tthis._checkIsFinished();\n\t\t\tif (queue.length)\n\t\t\t{\n\t\t\t\tthis.parseChunk(queue.shift());\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tparseOnData = true;\n\t\t\t}\n\t\t};\n\n\t\tthis._streamData = bindFunction(function(chunk)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tqueue.push(typeof chunk === 'string' ? chunk : chunk.toString(this._config.encoding));\n\n\t\t\t\tif (parseOnData)\n\t\t\t\t{\n\t\t\t\t\tparseOnData = false;\n\t\t\t\t\tthis._checkIsFinished();\n\t\t\t\t\tthis.parseChunk(queue.shift());\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (error)\n\t\t\t{\n\t\t\t\tthis._streamError(error);\n\t\t\t}\n\t\t}, this);\n\n\t\tthis._streamError = bindFunction(function(error)\n\t\t{\n\t\t\tthis._streamCleanUp();\n\t\t\tthis._sendError(error);\n\t\t}, this);\n\n\t\tthis._streamEnd = bindFunction(function()\n\t\t{\n\t\t\tthis._streamCleanUp();\n\t\t\tstreamHasEnded = true;\n\t\t\tthis._streamData('');\n\t\t}, this);\n\n\t\tthis._streamCleanUp = bindFunction(function()\n\t\t{\n\t\t\tthis._input.removeListener('data', this._streamData);\n\t\t\tthis._input.removeListener('end', this._streamEnd);\n\t\t\tthis._input.removeListener('error', this._streamError);\n\t\t}, this);\n\t}\n\tReadableStreamStreamer.prototype = Object.create(ChunkStreamer.prototype);\n\tReadableStreamStreamer.prototype.constructor = ReadableStreamStreamer;\n\n\n\tfunction DuplexStreamStreamer(_config) {\n\t\tvar Duplex = require('stream').Duplex;\n\t\tvar config = copy(_config);\n\t\tvar parseOnWrite = true;\n\t\tvar writeStreamHasFinished = false;\n\t\tvar parseCallbackQueue = [];\n\t\tvar stream = null;\n\n\t\tthis._onCsvData = function(results)\n\t\t{\n\t\t\tvar data = results.data;\n\t\t\tif (!stream.push(data) && !this._handle.paused()) {\n\t\t\t\t// the writeable consumer buffer has filled up\n\t\t\t\t// so we need to pause until more items\n\t\t\t\t// can be processed\n\t\t\t\tthis._handle.pause();\n\t\t\t}\n\t\t};\n\n\t\tthis._onCsvComplete = function()\n\t\t{\n\t\t\t// node will finish the read stream when\n\t\t\t// null is pushed\n\t\t\tstream.push(null);\n\t\t};\n\n\t\tconfig.step = bindFunction(this._onCsvData, this);\n\t\tconfig.complete = bindFunction(this._onCsvComplete, this);\n\t\tChunkStreamer.call(this, config);\n\n\t\tthis._nextChunk = function()\n\t\t{\n\t\t\tif (writeStreamHasFinished && parseCallbackQueue.length === 1) {\n\t\t\t\tthis._finished = true;\n\t\t\t}\n\t\t\tif (parseCallbackQueue.length) {\n\t\t\t\tparseCallbackQueue.shift()();\n\t\t\t} else {\n\t\t\t\tparseOnWrite = true;\n\t\t\t}\n\t\t};\n\n\t\tthis._addToParseQueue = function(chunk, callback)\n\t\t{\n\t\t\t// add to queue so that we can indicate\n\t\t\t// completion via callback\n\t\t\t// node will automatically pause the incoming stream\n\t\t\t// when too many items have been added without their\n\t\t\t// callback being invoked\n\t\t\tparseCallbackQueue.push(bindFunction(function() {\n\t\t\t\tthis.parseChunk(typeof chunk === 'string' ? chunk : chunk.toString(config.encoding));\n\t\t\t\tif (isFunction(callback)) {\n\t\t\t\t\treturn callback();\n\t\t\t\t}\n\t\t\t}, this));\n\t\t\tif (parseOnWrite) {\n\t\t\t\tparseOnWrite = false;\n\t\t\t\tthis._nextChunk();\n\t\t\t}\n\t\t};\n\n\t\tthis._onRead = function()\n\t\t{\n\t\t\tif (this._handle.paused()) {\n\t\t\t\t// the writeable consumer can handle more data\n\t\t\t\t// so resume the chunk parsing\n\t\t\t\tthis._handle.resume();\n\t\t\t}\n\t\t};\n\n\t\tthis._onWrite = function(chunk, encoding, callback)\n\t\t{\n\t\t\tthis._addToParseQueue(chunk, callback);\n\t\t};\n\n\t\tthis._onWriteComplete = function()\n\t\t{\n\t\t\twriteStreamHasFinished = true;\n\t\t\t// have to write empty string\n\t\t\t// so parser knows its done\n\t\t\tthis._addToParseQueue('');\n\t\t};\n\n\t\tthis.getStream = function()\n\t\t{\n\t\t\treturn stream;\n\t\t};\n\t\tstream = new Duplex({\n\t\t\treadableObjectMode: true,\n\t\t\tdecodeStrings: false,\n\t\t\tread: bindFunction(this._onRead, this),\n\t\t\twrite: bindFunction(this._onWrite, this)\n\t\t});\n\t\tstream.once('finish', bindFunction(this._onWriteComplete, this));\n\t}\n\tif (typeof PAPA_BROWSER_CONTEXT === 'undefined') {\n\t\tDuplexStreamStreamer.prototype = Object.create(ChunkStreamer.prototype);\n\t\tDuplexStreamStreamer.prototype.constructor = DuplexStreamStreamer;\n\t}\n\n\n\t// Use one ParserHandle per entire CSV file or string\n\tfunction ParserHandle(_config)\n\t{\n\t\t// One goal is to minimize the use of regular expressions...\n\t\tvar MAX_FLOAT = Math.pow(2, 53);\n\t\tvar MIN_FLOAT = -MAX_FLOAT;\n\t\tvar FLOAT = /^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)(e[-+]?\\d+)?\\s*$/;\n\t\tvar ISO_DATE = /(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))/;\n\t\tvar self = this;\n\t\tvar _stepCounter = 0;\t// Number of times step was called (number of rows parsed)\n\t\tvar _rowCounter = 0;\t// Number of rows that have been parsed so far\n\t\tvar _input;\t\t\t\t// The input being parsed\n\t\tvar _parser;\t\t\t// The core parser being used\n\t\tvar _paused = false;\t// Whether we are paused or not\n\t\tvar _aborted = false;\t// Whether the parser has aborted or not\n\t\tvar _delimiterError;\t// Temporary state between delimiter detection and processing results\n\t\tvar _fields = [];\t\t// Fields are from the header row of the input, if there is one\n\t\tvar _results = {\t\t// The last results returned from the parser\n\t\t\tdata: [],\n\t\t\terrors: [],\n\t\t\tmeta: {}\n\t\t};\n\n\t\tif (isFunction(_config.step))\n\t\t{\n\t\t\tvar userStep = _config.step;\n\t\t\t_config.step = function(results)\n\t\t\t{\n\t\t\t\t_results = results;\n\n\t\t\t\tif (needsHeaderRow())\n\t\t\t\t\tprocessResults();\n\t\t\t\telse\t// only call user's step function after header row\n\t\t\t\t{\n\t\t\t\t\tprocessResults();\n\n\t\t\t\t\t// It's possbile that this line was empty and there's no row here after all\n\t\t\t\t\tif (_results.data.length === 0)\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t_stepCounter += results.data.length;\n\t\t\t\t\tif (_config.preview && _stepCounter > _config.preview)\n\t\t\t\t\t\t_parser.abort();\n\t\t\t\t\telse {\n\t\t\t\t\t\t_results.data = _results.data[0];\n\t\t\t\t\t\tuserStep(_results, self);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Parses input. Most users won't need, and shouldn't mess with, the baseIndex\n\t\t * and ignoreLastRow parameters. They are used by streamers (wrapper functions)\n\t\t * when an input comes in multiple chunks, like from a file.\n\t\t */\n\t\tthis.parse = function(input, baseIndex, ignoreLastRow)\n\t\t{\n\t\t\tvar quoteChar = _config.quoteChar || '\"';\n\t\t\tif (!_config.newline)\n\t\t\t\t_config.newline = guessLineEndings(input, quoteChar);\n\n\t\t\t_delimiterError = false;\n\t\t\tif (!_config.delimiter)\n\t\t\t{\n\t\t\t\tvar delimGuess = guessDelimiter(input, _config.newline, _config.skipEmptyLines, _config.comments, _config.delimitersToGuess);\n\t\t\t\tif (delimGuess.successful)\n\t\t\t\t\t_config.delimiter = delimGuess.bestDelimiter;\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_delimiterError = true;\t// add error after parsing (otherwise it would be overwritten)\n\t\t\t\t\t_config.delimiter = Papa.DefaultDelimiter;\n\t\t\t\t}\n\t\t\t\t_results.meta.delimiter = _config.delimiter;\n\t\t\t}\n\t\t\telse if(isFunction(_config.delimiter))\n\t\t\t{\n\t\t\t\t_config.delimiter = _config.delimiter(input);\n\t\t\t\t_results.meta.delimiter = _config.delimiter;\n\t\t\t}\n\n\t\t\tvar parserConfig = copy(_config);\n\t\t\tif (_config.preview && _config.header)\n\t\t\t\tparserConfig.preview++;\t// to compensate for header row\n\n\t\t\t_input = input;\n\t\t\t_parser = new Parser(parserConfig);\n\t\t\t_results = _parser.parse(_input, baseIndex, ignoreLastRow);\n\t\t\tprocessResults();\n\t\t\treturn _paused ? { meta: { paused: true } } : (_results || { meta: { paused: false } });\n\t\t};\n\n\t\tthis.paused = function()\n\t\t{\n\t\t\treturn _paused;\n\t\t};\n\n\t\tthis.pause = function()\n\t\t{\n\t\t\t_paused = true;\n\t\t\t_parser.abort();\n\n\t\t\t// If it is streaming via \"chunking\", the reader will start appending correctly already so no need to substring,\n\t\t\t// otherwise we can get duplicate content within a row\n\t\t\t_input = isFunction(_config.chunk) ? \"\" : _input.substring(_parser.getCharIndex());\n\t\t};\n\n\t\tthis.resume = function()\n\t\t{\n\t\t\tif(self.streamer._halted) {\n\t\t\t\t_paused = false;\n\t\t\t\tself.streamer.parseChunk(_input, true);\n\t\t\t} else {\n\t\t\t\t// Bugfix: #636 In case the processing hasn't halted yet\n\t\t\t\t// wait for it to halt in order to resume\n\t\t\t\tsetTimeout(self.resume, 3);\n\t\t\t}\n\t\t};\n\n\t\tthis.aborted = function()\n\t\t{\n\t\t\treturn _aborted;\n\t\t};\n\n\t\tthis.abort = function()\n\t\t{\n\t\t\t_aborted = true;\n\t\t\t_parser.abort();\n\t\t\t_results.meta.aborted = true;\n\t\t\tif (isFunction(_config.complete))\n\t\t\t\t_config.complete(_results);\n\t\t\t_input = '';\n\t\t};\n\n\t\tfunction testEmptyLine(s) {\n\t\t\treturn _config.skipEmptyLines === 'greedy' ? s.join('').trim() === '' : s.length === 1 && s[0].length === 0;\n\t\t}\n\n\t\tfunction testFloat(s) {\n\t\t\tif (FLOAT.test(s)) {\n\t\t\t\tvar floatValue = parseFloat(s);\n\t\t\t\tif (floatValue > MIN_FLOAT && floatValue < MAX_FLOAT) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction processResults()\n\t\t{\n\t\t\tif (_results && _delimiterError)\n\t\t\t{\n\t\t\t\taddError('Delimiter', 'UndetectableDelimiter', 'Unable to auto-detect delimiting character; defaulted to \\'' + Papa.DefaultDelimiter + '\\'');\n\t\t\t\t_delimiterError = false;\n\t\t\t}\n\n\t\t\tif (_config.skipEmptyLines)\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < _results.data.length; i++)\n\t\t\t\t\tif (testEmptyLine(_results.data[i]))\n\t\t\t\t\t\t_results.data.splice(i--, 1);\n\t\t\t}\n\n\t\t\tif (needsHeaderRow())\n\t\t\t\tfillHeaderFields();\n\n\t\t\treturn applyHeaderAndDynamicTypingAndTransformation();\n\t\t}\n\n\t\tfunction needsHeaderRow()\n\t\t{\n\t\t\treturn _config.header && _fields.length === 0;\n\t\t}\n\n\t\tfunction fillHeaderFields()\n\t\t{\n\t\t\tif (!_results)\n\t\t\t\treturn;\n\n\t\t\tfunction addHeader(header, i)\n\t\t\t{\n\t\t\t\tif (isFunction(_config.transformHeader))\n\t\t\t\t\theader = _config.transformHeader(header, i);\n\n\t\t\t\t_fields.push(header);\n\t\t\t}\n\n\t\t\tif (Array.isArray(_results.data[0]))\n\t\t\t{\n\t\t\t\tfor (var i = 0; needsHeaderRow() && i < _results.data.length; i++)\n\t\t\t\t\t_results.data[i].forEach(addHeader);\n\n\t\t\t\t_results.data.splice(0, 1);\n\t\t\t}\n\t\t\t// if _results.data[0] is not an array, we are in a step where _results.data is the row.\n\t\t\telse\n\t\t\t\t_results.data.forEach(addHeader);\n\t\t}\n\n\t\tfunction shouldApplyDynamicTyping(field) {\n\t\t\t// Cache function values to avoid calling it for each row\n\t\t\tif (_config.dynamicTypingFunction && _config.dynamicTyping[field] === undefined) {\n\t\t\t\t_config.dynamicTyping[field] = _config.dynamicTypingFunction(field);\n\t\t\t}\n\t\t\treturn (_config.dynamicTyping[field] || _config.dynamicTyping) === true;\n\t\t}\n\n\t\tfunction parseDynamic(field, value)\n\t\t{\n\t\t\tif (shouldApplyDynamicTyping(field))\n\t\t\t{\n\t\t\t\tif (value === 'true' || value === 'TRUE')\n\t\t\t\t\treturn true;\n\t\t\t\telse if (value === 'false' || value === 'FALSE')\n\t\t\t\t\treturn false;\n\t\t\t\telse if (testFloat(value))\n\t\t\t\t\treturn parseFloat(value);\n\t\t\t\telse if (ISO_DATE.test(value))\n\t\t\t\t\treturn new Date(value);\n\t\t\t\telse\n\t\t\t\t\treturn (value === '' ? null : value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\n\t\tfunction applyHeaderAndDynamicTypingAndTransformation()\n\t\t{\n\t\t\tif (!_results || (!_config.header && !_config.dynamicTyping && !_config.transform))\n\t\t\t\treturn _results;\n\n\t\t\tfunction processRow(rowSource, i)\n\t\t\t{\n\t\t\t\tvar row = _config.header ? {} : [];\n\n\t\t\t\tvar j;\n\t\t\t\tfor (j = 0; j < rowSource.length; j++)\n\t\t\t\t{\n\t\t\t\t\tvar field = j;\n\t\t\t\t\tvar value = rowSource[j];\n\n\t\t\t\t\tif (_config.header)\n\t\t\t\t\t\tfield = j >= _fields.length ? '__parsed_extra' : _fields[j];\n\n\t\t\t\t\tif (_config.transform)\n\t\t\t\t\t\tvalue = _config.transform(value,field);\n\n\t\t\t\t\tvalue = parseDynamic(field, value);\n\n\t\t\t\t\tif (field === '__parsed_extra')\n\t\t\t\t\t{\n\t\t\t\t\t\trow[field] = row[field] || [];\n\t\t\t\t\t\trow[field].push(value);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\trow[field] = value;\n\t\t\t\t}\n\n\n\t\t\t\tif (_config.header)\n\t\t\t\t{\n\t\t\t\t\tif (j > _fields.length)\n\t\t\t\t\t\taddError('FieldMismatch', 'TooManyFields', 'Too many fields: expected ' + _fields.length + ' fields but parsed ' + j, _rowCounter + i);\n\t\t\t\t\telse if (j < _fields.length)\n\t\t\t\t\t\taddError('FieldMismatch', 'TooFewFields', 'Too few fields: expected ' + _fields.length + ' fields but parsed ' + j, _rowCounter + i);\n\t\t\t\t}\n\n\t\t\t\treturn row;\n\t\t\t}\n\n\t\t\tvar incrementBy = 1;\n\t\t\tif (!_results.data.length || Array.isArray(_results.data[0]))\n\t\t\t{\n\t\t\t\t_results.data = _results.data.map(processRow);\n\t\t\t\tincrementBy = _results.data.length;\n\t\t\t}\n\t\t\telse\n\t\t\t\t_results.data = processRow(_results.data, 0);\n\n\n\t\t\tif (_config.header && _results.meta)\n\t\t\t\t_results.meta.fields = _fields;\n\n\t\t\t_rowCounter += incrementBy;\n\t\t\treturn _results;\n\t\t}\n\n\t\tfunction guessDelimiter(input, newline, skipEmptyLines, comments, delimitersToGuess) {\n\t\t\tvar bestDelim, bestDelta, fieldCountPrevRow, maxFieldCount;\n\n\t\t\tdelimitersToGuess = delimitersToGuess || [',', '\\t', '|', ';', Papa.RECORD_SEP, Papa.UNIT_SEP];\n\n\t\t\tfor (var i = 0; i < delimitersToGuess.length; i++) {\n\t\t\t\tvar delim = delimitersToGuess[i];\n\t\t\t\tvar delta = 0, avgFieldCount = 0, emptyLinesCount = 0;\n\t\t\t\tfieldCountPrevRow = undefined;\n\n\t\t\t\tvar preview = new Parser({\n\t\t\t\t\tcomments: comments,\n\t\t\t\t\tdelimiter: delim,\n\t\t\t\t\tnewline: newline,\n\t\t\t\t\tpreview: 10\n\t\t\t\t}).parse(input);\n\n\t\t\t\tfor (var j = 0; j < preview.data.length; j++) {\n\t\t\t\t\tif (skipEmptyLines && testEmptyLine(preview.data[j])) {\n\t\t\t\t\t\temptyLinesCount++;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tvar fieldCount = preview.data[j].length;\n\t\t\t\t\tavgFieldCount += fieldCount;\n\n\t\t\t\t\tif (typeof fieldCountPrevRow === 'undefined') {\n\t\t\t\t\t\tfieldCountPrevRow = fieldCount;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\telse if (fieldCount > 0) {\n\t\t\t\t\t\tdelta += Math.abs(fieldCount - fieldCountPrevRow);\n\t\t\t\t\t\tfieldCountPrevRow = fieldCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (preview.data.length > 0)\n\t\t\t\t\tavgFieldCount /= (preview.data.length - emptyLinesCount);\n\n\t\t\t\tif ((typeof bestDelta === 'undefined' || delta <= bestDelta)\n\t\t\t\t\t&& (typeof maxFieldCount === 'undefined' || avgFieldCount > maxFieldCount) && avgFieldCount > 1.99) {\n\t\t\t\t\tbestDelta = delta;\n\t\t\t\t\tbestDelim = delim;\n\t\t\t\t\tmaxFieldCount = avgFieldCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_config.delimiter = bestDelim;\n\n\t\t\treturn {\n\t\t\t\tsuccessful: !!bestDelim,\n\t\t\t\tbestDelimiter: bestDelim\n\t\t\t};\n\t\t}\n\n\t\tfunction guessLineEndings(input, quoteChar)\n\t\t{\n\t\t\tinput = input.substring(0, 1024 * 1024);\t// max length 1 MB\n\t\t\t// Replace all the text inside quotes\n\t\t\tvar re = new RegExp(escapeRegExp(quoteChar) + '([^]*?)' + escapeRegExp(quoteChar), 'gm');\n\t\t\tinput = input.replace(re, '');\n\n\t\t\tvar r = input.split('\\r');\n\n\t\t\tvar n = input.split('\\n');\n\n\t\t\tvar nAppearsFirst = (n.length > 1 && n[0].length < r[0].length);\n\n\t\t\tif (r.length === 1 || nAppearsFirst)\n\t\t\t\treturn '\\n';\n\n\t\t\tvar numWithN = 0;\n\t\t\tfor (var i = 0; i < r.length; i++)\n\t\t\t{\n\t\t\t\tif (r[i][0] === '\\n')\n\t\t\t\t\tnumWithN++;\n\t\t\t}\n\n\t\t\treturn numWithN >= r.length / 2 ? '\\r\\n' : '\\r';\n\t\t}\n\n\t\tfunction addError(type, code, msg, row)\n\t\t{\n\t\t\tvar error = {\n\t\t\t\ttype: type,\n\t\t\t\tcode: code,\n\t\t\t\tmessage: msg\n\t\t\t};\n\t\t\tif(row !== undefined) {\n\t\t\t\terror.row = row;\n\t\t\t}\n\t\t\t_results.errors.push(error);\n\t\t}\n\t}\n\n\t/** https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions */\n\tfunction escapeRegExp(string)\n\t{\n\t\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n\t}\n\n\t/** The core parser implements speedy and correct CSV parsing */\n\tfunction Parser(config)\n\t{\n\t\t// Unpack the config object\n\t\tconfig = config || {};\n\t\tvar delim = config.delimiter;\n\t\tvar newline = config.newline;\n\t\tvar comments = config.comments;\n\t\tvar step = config.step;\n\t\tvar preview = config.preview;\n\t\tvar fastMode = config.fastMode;\n\t\tvar quoteChar;\n\t\t/** Allows for no quoteChar by setting quoteChar to undefined in config */\n\t\tif (config.quoteChar === undefined) {\n\t\t\tquoteChar = '\"';\n\t\t} else {\n\t\t\tquoteChar = config.quoteChar;\n\t\t}\n\t\tvar escapeChar = quoteChar;\n\t\tif (config.escapeChar !== undefined) {\n\t\t\tescapeChar = config.escapeChar;\n\t\t}\n\n\t\t// Delimiter must be valid\n\t\tif (typeof delim !== 'string'\n\t\t\t|| Papa.BAD_DELIMITERS.indexOf(delim) > -1)\n\t\t\tdelim = ',';\n\n\t\t// Comment character must be valid\n\t\tif (comments === delim)\n\t\t\tthrow new Error('Comment character same as delimiter');\n\t\telse if (comments === true)\n\t\t\tcomments = '#';\n\t\telse if (typeof comments !== 'string'\n\t\t\t|| Papa.BAD_DELIMITERS.indexOf(comments) > -1)\n\t\t\tcomments = false;\n\n\t\t// Newline must be valid: \\r, \\n, or \\r\\n\n\t\tif (newline !== '\\n' && newline !== '\\r' && newline !== '\\r\\n')\n\t\t\tnewline = '\\n';\n\n\t\t// We're gonna need these at the Parser scope\n\t\tvar cursor = 0;\n\t\tvar aborted = false;\n\n\t\tthis.parse = function(input, baseIndex, ignoreLastRow)\n\t\t{\n\t\t\t// For some reason, in Chrome, this speeds things up (!?)\n\t\t\tif (typeof input !== 'string')\n\t\t\t\tthrow new Error('Input must be a string');\n\n\t\t\t// We don't need to compute some of these every time parse() is called,\n\t\t\t// but having them in a more local scope seems to perform better\n\t\t\tvar inputLen = input.length,\n\t\t\t\tdelimLen = delim.length,\n\t\t\t\tnewlineLen = newline.length,\n\t\t\t\tcommentsLen = comments.length;\n\t\t\tvar stepIsFunction = isFunction(step);\n\n\t\t\t// Establish starting state\n\t\t\tcursor = 0;\n\t\t\tvar data = [], errors = [], row = [], lastCursor = 0;\n\n\t\t\tif (!input)\n\t\t\t\treturn returnable();\n\n\t\t\tif (fastMode || (fastMode !== false && input.indexOf(quoteChar) === -1))\n\t\t\t{\n\t\t\t\tvar rows = input.split(newline);\n\t\t\t\tfor (var i = 0; i < rows.length; i++)\n\t\t\t\t{\n\t\t\t\t\trow = rows[i];\n\t\t\t\t\tcursor += row.length;\n\t\t\t\t\tif (i !== rows.length - 1)\n\t\t\t\t\t\tcursor += newline.length;\n\t\t\t\t\telse if (ignoreLastRow)\n\t\t\t\t\t\treturn returnable();\n\t\t\t\t\tif (comments && row.substring(0, commentsLen) === comments)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tif (stepIsFunction)\n\t\t\t\t\t{\n\t\t\t\t\t\tdata = [];\n\t\t\t\t\t\tpushRow(row.split(delim));\n\t\t\t\t\t\tdoStep();\n\t\t\t\t\t\tif (aborted)\n\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tpushRow(row.split(delim));\n\t\t\t\t\tif (preview && i >= preview)\n\t\t\t\t\t{\n\t\t\t\t\t\tdata = data.slice(0, preview);\n\t\t\t\t\t\treturn returnable(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn returnable();\n\t\t\t}\n\n\t\t\tvar nextDelim = input.indexOf(delim, cursor);\n\t\t\tvar nextNewline = input.indexOf(newline, cursor);\n\t\t\tvar quoteCharRegex = new RegExp(escapeRegExp(escapeChar) + escapeRegExp(quoteChar), 'g');\n\t\t\tvar quoteSearch = input.indexOf(quoteChar, cursor);\n\n\t\t\t// Parser loop\n\t\t\tfor (;;)\n\t\t\t{\n\t\t\t\t// Field has opening quote\n\t\t\t\tif (input[cursor] === quoteChar)\n\t\t\t\t{\n\t\t\t\t\t// Start our search for the closing quote where the cursor is\n\t\t\t\t\tquoteSearch = cursor;\n\n\t\t\t\t\t// Skip the opening quote\n\t\t\t\t\tcursor++;\n\n\t\t\t\t\tfor (;;)\n\t\t\t\t\t{\n\t\t\t\t\t\t// Find closing quote\n\t\t\t\t\t\tquoteSearch = input.indexOf(quoteChar, quoteSearch + 1);\n\n\t\t\t\t\t\t//No other quotes are found - no other delimiters\n\t\t\t\t\t\tif (quoteSearch === -1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (!ignoreLastRow) {\n\t\t\t\t\t\t\t\t// No closing quote... what a pity\n\t\t\t\t\t\t\t\terrors.push({\n\t\t\t\t\t\t\t\t\ttype: 'Quotes',\n\t\t\t\t\t\t\t\t\tcode: 'MissingQuotes',\n\t\t\t\t\t\t\t\t\tmessage: 'Quoted field unterminated',\n\t\t\t\t\t\t\t\t\trow: data.length,\t// row has yet to be inserted\n\t\t\t\t\t\t\t\t\tindex: cursor\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn finish();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Closing quote at EOF\n\t\t\t\t\t\tif (quoteSearch === inputLen - 1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar value = input.substring(cursor, quoteSearch).replace(quoteCharRegex, quoteChar);\n\t\t\t\t\t\t\treturn finish(value);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If this quote is escaped, it's part of the data; skip it\n\t\t\t\t\t\t// If the quote character is the escape character, then check if the next character is the escape character\n\t\t\t\t\t\tif (quoteChar === escapeChar && input[quoteSearch + 1] === escapeChar)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tquoteSearch++;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If the quote character is not the escape character, then check if the previous character was the escape character\n\t\t\t\t\t\tif (quoteChar !== escapeChar && quoteSearch !== 0 && input[quoteSearch - 1] === escapeChar)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(nextDelim !== -1 && nextDelim < (quoteSearch + 1)) {\n\t\t\t\t\t\t\tnextDelim = input.indexOf(delim, (quoteSearch + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(nextNewline !== -1 && nextNewline < (quoteSearch + 1)) {\n\t\t\t\t\t\t\tnextNewline = input.indexOf(newline, (quoteSearch + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Check up to nextDelim or nextNewline, whichever is closest\n\t\t\t\t\t\tvar checkUpTo = nextNewline === -1 ? nextDelim : Math.min(nextDelim, nextNewline);\n\t\t\t\t\t\tvar spacesBetweenQuoteAndDelimiter = extraSpaces(checkUpTo);\n\n\t\t\t\t\t\t// Closing quote followed by delimiter or 'unnecessary spaces + delimiter'\n\t\t\t\t\t\tif (input[quoteSearch + 1 + spacesBetweenQuoteAndDelimiter] === delim)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trow.push(input.substring(cursor, quoteSearch).replace(quoteCharRegex, quoteChar));\n\t\t\t\t\t\t\tcursor = quoteSearch + 1 + spacesBetweenQuoteAndDelimiter + delimLen;\n\n\t\t\t\t\t\t\t// If char after following delimiter is not quoteChar, we find next quote char position\n\t\t\t\t\t\t\tif (input[quoteSearch + 1 + spacesBetweenQuoteAndDelimiter + delimLen] !== quoteChar)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tquoteSearch = input.indexOf(quoteChar, cursor);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\n\t\t\t\t\t\t\tnextNewline = input.indexOf(newline, cursor);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar spacesBetweenQuoteAndNewLine = extraSpaces(nextNewline);\n\n\t\t\t\t\t\t// Closing quote followed by newline or 'unnecessary spaces + newLine'\n\t\t\t\t\t\tif (input.substring(quoteSearch + 1 + spacesBetweenQuoteAndNewLine, quoteSearch + 1 + spacesBetweenQuoteAndNewLine + newlineLen) === newline)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trow.push(input.substring(cursor, quoteSearch).replace(quoteCharRegex, quoteChar));\n\t\t\t\t\t\t\tsaveRow(quoteSearch + 1 + spacesBetweenQuoteAndNewLine + newlineLen);\n\t\t\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\t// because we may have skipped the nextDelim in the quoted field\n\t\t\t\t\t\t\tquoteSearch = input.indexOf(quoteChar, cursor);\t// we search for first quote in next line\n\n\t\t\t\t\t\t\tif (stepIsFunction)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdoStep();\n\t\t\t\t\t\t\t\tif (aborted)\n\t\t\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (preview && data.length >= preview)\n\t\t\t\t\t\t\t\treturn returnable(true);\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t// Checks for valid closing quotes are complete (escaped quotes or quote followed by EOF/delimiter/newline) -- assume these quotes are part of an invalid text string\n\t\t\t\t\t\terrors.push({\n\t\t\t\t\t\t\ttype: 'Quotes',\n\t\t\t\t\t\t\tcode: 'InvalidQuotes',\n\t\t\t\t\t\t\tmessage: 'Trailing quote on quoted field is malformed',\n\t\t\t\t\t\t\trow: data.length,\t// row has yet to be inserted\n\t\t\t\t\t\t\tindex: cursor\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tquoteSearch++;\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Comment found at start of new line\n\t\t\t\tif (comments && row.length === 0 && input.substring(cursor, cursor + commentsLen) === comments)\n\t\t\t\t{\n\t\t\t\t\tif (nextNewline === -1)\t// Comment ends at EOF\n\t\t\t\t\t\treturn returnable();\n\t\t\t\t\tcursor = nextNewline + newlineLen;\n\t\t\t\t\tnextNewline = input.indexOf(newline, cursor);\n\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Next delimiter comes before next newline, so we've reached end of field\n\t\t\t\tif (nextDelim !== -1 && (nextDelim < nextNewline || nextNewline === -1))\n\t\t\t\t{\n\t\t\t\t\t// we check, if we have quotes, because delimiter char may be part of field enclosed in quotes\n\t\t\t\t\tif (quoteSearch > nextDelim) {\n\t\t\t\t\t\t// we have quotes, so we try to find the next delimiter not enclosed in quotes and also next starting quote char\n\t\t\t\t\t\tvar nextDelimObj = getNextUnquotedDelimiter(nextDelim, quoteSearch, nextNewline);\n\n\t\t\t\t\t\t// if we have next delimiter char which is not enclosed in quotes\n\t\t\t\t\t\tif (nextDelimObj && typeof nextDelimObj.nextDelim !== 'undefined') {\n\t\t\t\t\t\t\tnextDelim = nextDelimObj.nextDelim;\n\t\t\t\t\t\t\tquoteSearch = nextDelimObj.quoteSearch;\n\t\t\t\t\t\t\trow.push(input.substring(cursor, nextDelim));\n\t\t\t\t\t\t\tcursor = nextDelim + delimLen;\n\t\t\t\t\t\t\t// we look for next delimiter char\n\t\t\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\trow.push(input.substring(cursor, nextDelim));\n\t\t\t\t\t\tcursor = nextDelim + delimLen;\n\t\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// End of row\n\t\t\t\tif (nextNewline !== -1)\n\t\t\t\t{\n\t\t\t\t\trow.push(input.substring(cursor, nextNewline));\n\t\t\t\t\tsaveRow(nextNewline + newlineLen);\n\n\t\t\t\t\tif (stepIsFunction)\n\t\t\t\t\t{\n\t\t\t\t\t\tdoStep();\n\t\t\t\t\t\tif (aborted)\n\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (preview && data.length >= preview)\n\t\t\t\t\t\treturn returnable(true);\n\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\n\t\t\treturn finish();\n\n\n\t\t\tfunction pushRow(row)\n\t\t\t{\n\t\t\t\tdata.push(row);\n\t\t\t\tlastCursor = cursor;\n\t\t\t}\n\n\t\t\t/**\n * checks if there are extra spaces after closing quote and given index without any text\n * if Yes, returns the number of spaces\n */\n\t\t\tfunction extraSpaces(index) {\n\t\t\t\tvar spaceLength = 0;\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\tvar textBetweenClosingQuoteAndIndex = input.substring(quoteSearch + 1, index);\n\t\t\t\t\tif (textBetweenClosingQuoteAndIndex && textBetweenClosingQuoteAndIndex.trim() === '') {\n\t\t\t\t\t\tspaceLength = textBetweenClosingQuoteAndIndex.length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn spaceLength;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Appends the remaining input from cursor to the end into\n\t\t\t * row, saves the row, calls step, and returns the results.\n\t\t\t */\n\t\t\tfunction finish(value)\n\t\t\t{\n\t\t\t\tif (ignoreLastRow)\n\t\t\t\t\treturn returnable();\n\t\t\t\tif (typeof value === 'undefined')\n\t\t\t\t\tvalue = input.substring(cursor);\n\t\t\t\trow.push(value);\n\t\t\t\tcursor = inputLen;\t// important in case parsing is paused\n\t\t\t\tpushRow(row);\n\t\t\t\tif (stepIsFunction)\n\t\t\t\t\tdoStep();\n\t\t\t\treturn returnable();\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Appends the current row to the results. It sets the cursor\n\t\t\t * to newCursor and finds the nextNewline. The caller should\n\t\t\t * take care to execute user's step function and check for\n\t\t\t * preview and end parsing if necessary.\n\t\t\t */\n\t\t\tfunction saveRow(newCursor)\n\t\t\t{\n\t\t\t\tcursor = newCursor;\n\t\t\t\tpushRow(row);\n\t\t\t\trow = [];\n\t\t\t\tnextNewline = input.indexOf(newline, cursor);\n\t\t\t}\n\n\t\t\t/** Returns an object with the results, errors, and meta. */\n\t\t\tfunction returnable(stopped)\n\t\t\t{\n\t\t\t\treturn {\n\t\t\t\t\tdata: data,\n\t\t\t\t\terrors: errors,\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tdelimiter: delim,\n\t\t\t\t\t\tlinebreak: newline,\n\t\t\t\t\t\taborted: aborted,\n\t\t\t\t\t\ttruncated: !!stopped,\n\t\t\t\t\t\tcursor: lastCursor + (baseIndex || 0)\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t/** Executes the user's step function and resets data & errors. */\n\t\t\tfunction doStep()\n\t\t\t{\n\t\t\t\tstep(returnable());\n\t\t\t\tdata = [];\n\t\t\t\terrors = [];\n\t\t\t}\n\n\t\t\t/** Gets the delimiter character, which is not inside the quoted field */\n\t\t\tfunction getNextUnquotedDelimiter(nextDelim, quoteSearch, newLine) {\n\t\t\t\tvar result = {\n\t\t\t\t\tnextDelim: undefined,\n\t\t\t\t\tquoteSearch: undefined\n\t\t\t\t};\n\t\t\t\t// get the next closing quote character\n\t\t\t\tvar nextQuoteSearch = input.indexOf(quoteChar, quoteSearch + 1);\n\n\t\t\t\t// if next delimiter is part of a field enclosed in quotes\n\t\t\t\tif (nextDelim > quoteSearch && nextDelim < nextQuoteSearch && (nextQuoteSearch < newLine || newLine === -1)) {\n\t\t\t\t\t// get the next delimiter character after this one\n\t\t\t\t\tvar nextNextDelim = input.indexOf(delim, nextQuoteSearch);\n\n\t\t\t\t\t// if there is no next delimiter, return default result\n\t\t\t\t\tif (nextNextDelim === -1) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t\t// find the next opening quote char position\n\t\t\t\t\tif (nextNextDelim > nextQuoteSearch) {\n\t\t\t\t\t\tnextQuoteSearch = input.indexOf(quoteChar, nextQuoteSearch + 1);\n\t\t\t\t\t}\n\t\t\t\t\t// try to get the next delimiter position\n\t\t\t\t\tresult = getNextUnquotedDelimiter(nextNextDelim, nextQuoteSearch, newLine);\n\t\t\t\t} else {\n\t\t\t\t\tresult = {\n\t\t\t\t\t\tnextDelim: nextDelim,\n\t\t\t\t\t\tquoteSearch: quoteSearch\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t};\n\n\t\t/** Sets the abort flag */\n\t\tthis.abort = function()\n\t\t{\n\t\t\taborted = true;\n\t\t};\n\n\t\t/** Gets the cursor position */\n\t\tthis.getCharIndex = function()\n\t\t{\n\t\t\treturn cursor;\n\t\t};\n\t}\n\n\n\tfunction newWorker()\n\t{\n\t\tif (!Papa.WORKERS_SUPPORTED)\n\t\t\treturn false;\n\n\t\tvar workerUrl = getWorkerBlob();\n\t\tvar w = new global.Worker(workerUrl);\n\t\tw.onmessage = mainThreadReceivedMessage;\n\t\tw.id = workerIdCounter++;\n\t\tworkers[w.id] = w;\n\t\treturn w;\n\t}\n\n\t/** Callback when main thread receives a message */\n\tfunction mainThreadReceivedMessage(e)\n\t{\n\t\tvar msg = e.data;\n\t\tvar worker = workers[msg.workerId];\n\t\tvar aborted = false;\n\n\t\tif (msg.error)\n\t\t\tworker.userError(msg.error, msg.file);\n\t\telse if (msg.results && msg.results.data)\n\t\t{\n\t\t\tvar abort = function() {\n\t\t\t\taborted = true;\n\t\t\t\tcompleteWorker(msg.workerId, { data: [], errors: [], meta: { aborted: true } });\n\t\t\t};\n\n\t\t\tvar handle = {\n\t\t\t\tabort: abort,\n\t\t\t\tpause: notImplemented,\n\t\t\t\tresume: notImplemented\n\t\t\t};\n\n\t\t\tif (isFunction(worker.userStep))\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < msg.results.data.length; i++)\n\t\t\t\t{\n\t\t\t\t\tworker.userStep({\n\t\t\t\t\t\tdata: msg.results.data[i],\n\t\t\t\t\t\terrors: msg.results.errors,\n\t\t\t\t\t\tmeta: msg.results.meta\n\t\t\t\t\t}, handle);\n\t\t\t\t\tif (aborted)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdelete msg.results;\t// free memory ASAP\n\t\t\t}\n\t\t\telse if (isFunction(worker.userChunk))\n\t\t\t{\n\t\t\t\tworker.userChunk(msg.results, handle, msg.file);\n\t\t\t\tdelete msg.results;\n\t\t\t}\n\t\t}\n\n\t\tif (msg.finished && !aborted)\n\t\t\tcompleteWorker(msg.workerId, msg.results);\n\t}\n\n\tfunction completeWorker(workerId, results) {\n\t\tvar worker = workers[workerId];\n\t\tif (isFunction(worker.userComplete))\n\t\t\tworker.userComplete(results);\n\t\tworker.terminate();\n\t\tdelete workers[workerId];\n\t}\n\n\tfunction notImplemented() {\n\t\tthrow new Error('Not implemented.');\n\t}\n\n\t/** Callback when worker thread receives a message */\n\tfunction workerThreadReceivedMessage(e)\n\t{\n\t\tvar msg = e.data;\n\n\t\tif (typeof Papa.WORKER_ID === 'undefined' && msg)\n\t\t\tPapa.WORKER_ID = msg.workerId;\n\n\t\tif (typeof msg.input === 'string')\n\t\t{\n\t\t\tglobal.postMessage({\n\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\tresults: Papa.parse(msg.input, msg.config),\n\t\t\t\tfinished: true\n\t\t\t});\n\t\t}\n\t\telse if ((global.File && msg.input instanceof File) || msg.input instanceof Object)\t// thank you, Safari (see issue #106)\n\t\t{\n\t\t\tvar results = Papa.parse(msg.input, msg.config);\n\t\t\tif (results)\n\t\t\t\tglobal.postMessage({\n\t\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\t\tresults: results,\n\t\t\t\t\tfinished: true\n\t\t\t\t});\n\t\t}\n\t}\n\n\t/** Makes a deep copy of an array or object (mostly) */\n\tfunction copy(obj)\n\t{\n\t\tif (typeof obj !== 'object' || obj === null)\n\t\t\treturn obj;\n\t\tvar cpy = Array.isArray(obj) ? [] : {};\n\t\tfor (var key in obj)\n\t\t\tcpy[key] = copy(obj[key]);\n\t\treturn cpy;\n\t}\n\n\tfunction bindFunction(f, self)\n\t{\n\t\treturn function() { f.apply(self, arguments); };\n\t}\n\n\tfunction isFunction(func)\n\t{\n\t\treturn typeof func === 'function';\n\t}\n\n\treturn Papa;\n}));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar Emitter = require('emitter');\n\nfunction Stream() {\n Emitter.call(this);\n}\nStream.prototype = new Emitter();\nmodule.exports = Stream;\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (!this.hasListeners('error')) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.off('data', ondata);\n dest.off('drain', ondrain);\n\n source.off('end', onend);\n source.off('close', onclose);\n\n source.off('error', onerror);\n dest.off('error', onerror);\n\n source.off('end', cleanup);\n source.off('close', cleanup);\n\n dest.off('end', cleanup);\n dest.off('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('end', cleanup);\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n}\n","/*! *****************************************************************************\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\nexport function __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\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]]\n ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/uuidjs/uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","!function(e,t){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)(\"object\"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=0)}([function(e,t,r){\"use strict\";r.r(t);var o=function(e,t,r,o,n,i,s,a){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=r,u._compiled=!0),o&&(u.functional=!0),i&&(u._scopeId=\"data-v-\"+i),s?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),n&&n.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},u._ssrRegister=l):n&&(l=a?function(){n.call(this,this.$root.$options.shadowRoot)}:n),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}({props:{css:{type:String,default:\"embed-responsive-16by9\"},src:{type:String},params:{type:Object}},data:function(){return{valid:!1,url:\"\",videos:[{reg:/^((?:https?:)?\\/\\/)?((?:www|m)\\.)?((?:youtube\\.com|youtu.be))(\\/(?:[\\w\\-]+\\?v=|embed\\/|v\\/)?)([\\w\\-]+)(\\S+)?$/i,url:\"https://www.youtube.com/embed/$5\",params:{\"picture-in-picture\":1,accelerometer:1,gyroscope:1}},{reg:/^.*vimeo.com\\/(\\d+)($|\\/|\\b)/i,url:\"https://player.vimeo.com/video/$1\",params:{title:0,byline:0,portrait:0}},{reg:/^.*(?:\\/video|dai.ly)\\/([A-Za-z0-9]+)([^#\\&\\?]*).*/i,url:\"https://www.dailymotion.com/embed/video/$1\",params:{autoplay:0}},{reg:/^.*coub.com\\/(?:embed|view)\\/([A-Za-z0-9]+)([^#\\&\\?]*).*/i,url:\"https://coub.com/embed/$1\",params:{autoplay:0}}]}},watch:{src:function(e){this.parse()}},methods:{parse:function(){if(this.src)for(var e=0;e=0?\"&\":\"?\";return this.url=this.src.replace(t.reg,t.url)+n+o,void(this.valid=!0)}}this.valid=!1}},mounted:function(){this.parse()}},(function(){var e=this.$createElement,t=this._self._c||e;return this.valid?t(\"div\",{staticClass:\"embed-responsive\",class:[this.css]},[t(\"iframe\",{staticClass:\"embed-responsive-item\",attrs:{loading:\"lazy\",sandbox:\"allow-forms allow-scripts allow-pointer-lock allow-same-origin allow-top-navigation allow-presentation\",allowfullscreen:\"\",src:this.url}})]):this._e()}),[],!1,null,null,null).exports,n={install:function(e){e.__embed_installed||(e.__embed_installed=!0,e.component(\"video-embed\",o))}};\"undefined\"!=typeof window&&window.Vue&&Vue.use(n);t.default=n}])}));","/* 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 = typeof scriptExports === 'function'\n ? scriptExports.options\n : 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) { // 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\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","/*!\n * Vue.js v2.6.12\n * (c) 2014-2020 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. , , v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n // #6574 in case the inject object is observed...\n if (key === '__ob__') { continue }\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n if (!children || !children.length) {\n return {}\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/* */\n\nfunction normalizeScopedSlots (\n slots,\n normalSlots,\n prevSlots\n) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n var key = slots && slots.$key;\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized\n } else if (\n isStable &&\n prevSlots &&\n prevSlots !== emptyObject &&\n key === prevSlots.$key &&\n !hasNormalSlots &&\n !prevSlots.$hasNormal\n ) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots\n } else {\n res = {};\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (slots && Object.isExtensible(slots)) {\n (slots)._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function () {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && typeof res === 'object' && !Array.isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n return res && (\n res.length === 0 ||\n (res.length === 1 && res[0].isComment) // #9658\n ) ? undefined\n : res\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n return function () { return slots[key]; }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n while (!result.done) {\n ret.push(render(result.value, ret.length));\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering \n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n nodes = this.$slots[name] || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res,\n // the following are added in 2.6\n hasDynamicKeys,\n contentHashKey\n) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n (res).$key = contentHashKey;\n }\n return res\n}\n\n/* */\n\nfunction bindDynamicKeys (baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a special value for explicitly removing a binding\n warn(\n (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n this\n );\n }\n }\n return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n return typeof value === 'string' ? symbol + value : value\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var this$1 = this;\n\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(\n data.scopedSlots,\n this$1.$slots = resolveSlots(children, parent)\n );\n }\n return this$1.$slots\n };\n\n Object.defineProperty(this, 'scopedSlots', ({\n enumerable: true,\n get: function get () {\n return normalizeScopedSlots(data.scopedSlots, this.slots())\n }\n }));\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent // activeInstance in lifecycle state\n) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.nativeOn)) {\n warn(\n (\"The .native modifier for v-on is only valid on components but it was used on <\" + tag + \">.\"),\n context\n );\n }\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(\n _parentVnode.data.scopedSlots,\n vm.$slots,\n vm.$scopedSlots\n );\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n // There's no need to maintain a stack because all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n }\n // if the returned array contains only a single node, allow it\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n var owner = currentRenderingInstance;\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (owner && !isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true;\n var timerLoading = null;\n var timerTimeout = null\n\n ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n (owners[i]).$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n if (timerLoading !== null) {\n clearTimeout(timerLoading);\n timerLoading = null;\n }\n if (timerTimeout !== null) {\n clearTimeout(timerTimeout);\n timerTimeout = null;\n }\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n timerLoading = setTimeout(function () {\n timerLoading = null;\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n timerTimeout = setTimeout(function () {\n timerTimeout = null;\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n return vm\n };\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n}\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before () {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(\n (newScopedSlots && !newScopedSlots.$stable) ||\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n );\n\n // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n var needsForceUpdate = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n var performance = window.performance;\n if (\n performance &&\n typeof performance.now === 'function' &&\n getNow() > document.createEvent('Event').timeStamp\n ) {\n // if the event timestamp, although evaluated AFTER the Date.now(), is\n // smaller than it, it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listener timestamps as\n // well.\n getNow = function () { return performance.now(); };\n }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n try {\n cb.call(vm, watcher.value);\n } catch (error) {\n handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n }\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\n\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n // 2.6 explicit observable API\n Vue.observable = function (obj) {\n observe(obj);\n return obj\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.6.12';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function (key, value) {\n return isFalsyAttrValue(value) || value === 'false'\n ? 'false'\n // allow arbitrary string value for contenteditable\n : key === 'contenteditable' && isValidContentEditableValue(value)\n ? value\n : 'true'\n};\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove$$1 () {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove$$1.listeners = listeners;\n return remove$$1\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n insert(parentElm, vnode.elm, refElm);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (nodeOps.parentNode(ref$$1) === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by \n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (\n oldVnode,\n vnode,\n insertedVnodeQueue,\n ownerArray,\n index,\n removeOnly\n ) {\n if (oldVnode === vnode) {\n return\n }\n\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // clone reused vnode\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(ch);\n }\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '
, or missing
. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes([oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. \n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for